【发布时间】:2015-11-10 22:20:00
【问题描述】:
我有一个架构,当用户注册时,他/她的设置会被初始化。所以我们需要 GET 和 PUT 来分别获取或更新设置 API 上的设置。
我正在使用 django rest 框架的模型序列化器来存储和获取设置。它在给出响应方面效果很好,但不会将响应保存到模型中。
serializers.py
class UserSettingsSerializer(serializers.ModelSerializer):
class Meta:
model = UserSettings
fields = ('group_notifications', 'updates', 'goal_remind_me',
'goal_days', 'goal_time_interval', 'user')
models.py
class UserSettings(models.Model):
class Meta:
db_table = 'user_settings'
user = models.ForeignKey('User')
group_notifications = models.BooleanField(default=True)
updates = models.BooleanField(default=False)
goal_remind_me = models.BooleanField(default=False)
goal_days = ListField()
goal_time_interval = models.IntegerField(null=True)
views.py
def settings(request, pk):
if request.method == 'PUT':
request.data['user'] = user.id
serializer = UserSettingsSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
serializer_dict = serializer.data
serializer_dict["message"] = "Settings updated successfully."
return Response(serializer_dict, status=status.HTTP_200_OK)
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
我得到了预期的响应,但它没有将数据存储在 user_settings 表中,我正在使用 PostgreSql。
【问题讨论】:
-
serializer.save()返回一个实例。尝试instance = serializer.save()并检查您在实例中得到了什么。 -
您正在尝试进行更新?它正在这里创建。
-
是的,它正在创建,而我只想要每个用户一条记录
标签: django postgresql django-rest-framework serialization