如何在 Django 的序列化程序中使用主键
How to use Primary Key In a Serializer in Django
我的模特是
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()
没有保存数据,报错
有没有其他方法可以使用主键。
将此添加到您的序列化程序
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)
我的模特是
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()
没有保存数据,报错
有没有其他方法可以使用主键。
将此添加到您的序列化程序
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)