问题描述
我有一个带有外键的模型,我想通过序列化程序进行更新,我不想使用内置的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 (将#修改为@)