Django Rest Framework-使用自引用M2M字段重写模型的序列化程序创建方法

Django Rest Framework-使用自引用M2M字段重写模型的序列化程序创建方法,django,django-rest-framework,Django,Django Rest Framework,我有一个这样的模型: class Profile(models.Model): following = models.ManyToManyField('Profile', related_name='followed') admin_notes = models.TextField() class ProfileSerializer(serializers.HyperlinkedModelSerializer): class Meta: model =

我有一个这样的模型:

class Profile(models.Model):
    following = models.ManyToManyField('Profile', related_name='followed')
    admin_notes = models.TextField()
class ProfileSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Profile
        fields = '__all__'
Django Rest框架序列化程序如下所示:

class Profile(models.Model):
    following = models.ManyToManyField('Profile', related_name='followed')
    admin_notes = models.TextField()
class ProfileSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Profile
        fields = '__all__'
创建新的
配置文件时
我想中断保存/创建,以编程方式设置
管理注释
。我知道如何在基于函数的视图中实现这一点,但这次我使用的是DRF的ViewSet,所以我想在序列化程序中实现这一点。不过,自我参照关系给我带来了麻烦

我在
探查器序列化程序中尝试了这一点:

def create(self, **validated_data):
    p = Profile(**validated_data)
    p.admin_notes = 'Test'
    p.save()
这以及尝试
Profile.objects.create
而不是在第一行创建一个新的
Profile
实例,导致了以下错误:

Exception Value: "<Profile>" needs to have a value for field "id" before this many-to-many relationship can be used.
导致此错误的原因:

Exception Value: create() got an unexpected keyword argument 'following'
我知道Django在两步保存过程中创建了m2m关系,所以这个错误是有道理的,但仍然让我感到困惑,不知道如何继续前进。根据我的模型的设置方式,如何在序列化程序中设置
admin\u notes
的值?

试试这个(假设您正在将配置文件实例的ID传递到m2m字段):