gpt4 book ai didi

django - 如何在 Django 序列化器中使用主键

转载 作者:行者123 更新时间:2023-12-02 05:04:01 25 4
gpt4 key购买 nike

我的模型是

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()

它没有保存数据并给出错误。

除了这个之外,还有其他方法可以使用主键吗?

最佳答案

您应该使用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')

更新如果您想更新数据库中的现有对象,则必须将模型实例作为参数传递给UserInfoSerializer构造函数。

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

关于django - 如何在 Django 序列化器中使用主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37857600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com