Django Rest Framework:处理多对多关系

时间:2020-05-15 09:05:11

标签: python django-models django-rest-framework

要求是“我要在人员组选择中插入人员,并且在创建人员组时,我还可以为该特定组选择人员”。

我在我的 models.py 中添加了两个模型,并管理它们之间的多对多关系。

models.py

from django.db import models

class PersonGroup(models.Model):
    id = models.AutoField(primary_key=True)
    groupName = models.CharField(max_length=30)    
    detail = models.CharField(max_length=200)

class Person(models.Model):
    id = models.AutoField(primary_key=True)
    personId = models.CharField(max_length=20)
    personName = models.CharField(max_length=20)    
    state = models.IntegerField()
    personGroup = models.ManyToManyField(PersonGroup, related_name="person_list", blank=True) 

serializers.py

class PersonSerializer(serializers.ModelSerializer):
    personGroup = serializers.PrimaryKeyRelatedField(queryset=PersonGroup.objects.all(), many=True)
    class Meta:
        model = Person
        fields = '__all__'

class PersonGroupSerializer(serializers.ModelSerializer):
    person_list = PersonSerializer(many=True, read_only=True)
    class Meta:
        model = PersonGroup
        fields = '__all__'

上面的代码帮助我创建带有personGroup选择的人员 enter image description here

但是,我也想在创建personGroup时添加人员选择。目前,在创建personGroup时,我不允许输入人员。 enter image description here

请让我知道在创建人员组时是否有任何解决方案可以选择可用人员。

1 个答案:

答案 0 :(得分:1)

您在person_list中的PersonGroupSerializer字段是只读的,因此您无法使用API​​对其进行修改。

person_list = serializers.PrimaryKeyRelatedField(queryset=Person.objects.all(), many=True)

尝试删除此arg。

您可能还希望切换到ForeignKey字段,而不是拖延时间。

相关问题