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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...