【问题标题】:How to use Primary Key In a Serializer in Django如何在 Django 的序列化程序中使用主键
【发布时间】:2016-10-17 21:02:48
【问题描述】:

我的模特是

class UserInfo(models.Model):
    user = models.OneToOneField(User, unique=True)
    mobile_no = models.CharField(max_length=10, blank=True)

序列化器是:

class UserInfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserInfo
        fields = ('mobile_no','user')

但是每当我尝试使用它时

serializer = UserInfoSerializer(data=data)
if serializer.is_valid():
   serializer.save()

不保存数据,报错。

除了这个之外,还有什么方法可以用来使用主键。

【问题讨论】:

  • 你能告诉我它抛出了什么错误信息吗?

标签: django django-rest-framework django-serializer


【解决方案1】:

你应该使用PrimaryKeyRelatedField

将此添加到您的序列化程序中

user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())

您的UserInfoSerializer 应如下所示:

class UserInfoSerializer(serializers.ModelSerializer):
    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())

    class Meta:
        model = UserInfo
        fields = ('mobile_no','user')

更新 如果要更新数据库中的现有对象,则必须将 model instance 作为参数传递给 UserInfoSerializer 构造函数。

user_info = self.get_object()
serializer = UserInfoSerializer(user_info, data=data)

【讨论】:

  • 我现在可以创建了。但是当我要使用 user_serializer.save() 更新数据时,它会保存而不会出错,但无法反映在数据库中。
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 2022-01-11
  • 1970-01-01
  • 2021-03-19
相关资源
最近更新 更多