如何解决DRF序列化程序不会在更新中引发错误,但不会更新
我有一个带有外键的模型,我想通过序列化程序进行更新,我不想使用内置的ID字段来查找外键。 我的序列化器代码似乎运行正常,没有引发任何错误,但它没有更新外键字段。
型号:
class Group(models.Model):
group_id = models.CharField(max_length=100)
name = models.CharField(max_length=255)
farm = models.ForeignKey(to=Farm,on_delete=models.CASCADE,related_name=Relatednames.GROUPS,default=None,null=True,blank=True,)
milking = models.BooleanField(help_text=GroupHelpTexts.MILKING)
sub_groups = models.ForeignKey('self',on_delete=models.PROTECT,related_name=Relatednames.SUBGROUPS,)
def __str__(self):
return f'{self.name}'
class Cow(models.Model):
management_id = models.CharField(max_length=255)
eid_number = models.CharField(max_length=255,primary_key=True,blank=False,)
group = models.ForeignKey(Group,related_name=Relatednames.COWS)
我的序列化器:
class CowManagementSerializer(serializers.ModelSerializer):
group = serializers.SlugrelatedField(slug_field='group_id',queryset=Group.objects.all())
class Meta:
model = Cow
fields = ['management_id','eid_number','group']
def validate(self,attrs):
if attrs['group']:
try:
name = attrs['group']
user = self.context['request'].user
group = Group.objects.get(name=name,farm__user=user)
attrs['group'] == group
return attrs
except Group.DoesNotExist:
raise serializers.ValidationError("Group Not Found")
return attrs
def update(self,instance,validated_data):
group = validated_data.pop('group')
instance.group = group
instance.save()
return instance
{
"group": [
"Incorrect type. Expected pk value,received str."
]
}
有了它,我得到了200状态代码,但是没有更新。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。