小编Sag*_*ari的帖子

如何在 Django Rest Framework 中使用 SerializerMethodField 进行更新

我的 ModelSerializer 中有一个字段,我已将其设置为 SerializerMethodField 来修改该字段的获取行为。以前可以更新数据,现在不行了。我该如何解决这个问题?

最初,在不使用 SerializerMethodField 的情况下,我得到了如下数据:

    {
        ...
        "members": [2,3],
        ...
    }
Run Code Online (Sandbox Code Playgroud)

但我添加了 SerializerMethodField 来修改数据,然后更新停止工作。

模型.py

# Create your models here.
class Company(models.Model):
    members = ArrayField(models.IntegerField(blank=True), blank=True)
...
Run Code Online (Sandbox Code Playgroud)

序列化器.py

class AccountSerializer(serializers.ModelSerializer):
    user=serializers.StringRelatedField(read_only=False)
    class Meta:
        model=Account
        fields='__all__'

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

class CompanySerializer(serializers.ModelSerializer):
    user = UserSerializer(read_only=False)
    members = serializers.SerializerMethodField()
    class Meta:
        model = Company
        fields = '__all__' #('id', 'name', 'description', 'date_created', 'user', 'status', 'theme', 'members')

    def get_members(self, obj):
        accounts = Account.objects.filter(id__in=obj.members)
        return AccountSerializer(accounts, …
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

4
推荐指数
1
解决办法
4042
查看次数

标签 统计

django ×1

django-rest-framework ×1

python ×1