Я создал 3 группы: 1. Персонал, 2. Администратор, 3. Операционный менеджер и назначенное разрешение.Теперь, когда бы я ни захотел добавить нового пользователя, я хотел показать поле выбора группы и иметь возможность выбрать группу.
В соответствии с платформой пользователь и группы имеют отношения многие ко многим, и я пытаюсьреализовать вложенный сериализатор.И в соответствии с документацией для добавления вложенных данных мне нужно реализовать метод create
или update
в сериализаторе, но здесь я не получаю поле выбора в группе, и данные равны нулю.
GroupSerializer:
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ('name',)
UserSerializer:
class UserSerializers(serializers.ModelSerializer):
groups = GroupSerializer(many=True)
class Meta:
model = User
fields = ('first_name', 'last_name','address','contact', 'email', 'date_of_birth', 'branch', 'groups')
def create(self, validated_data):
groups_data = validated_data.pop('groups')
user = User.objects.create(**validated_data)
for group_data in groups_data:
Group.objects.create(user=user, **group_data)
return user
, когда я хотел сделать запрос на публикацию, я получаю:
{
"first_name": "",
"last_name": "",
"address": "",
"contact": null,
"email": "",
"date_of_birth": null,
"branch": null,
"groups": []
}
здесьполя групп пусты.Если я пытаюсь сделать запрос на сообщение, он говорит:
{
"groups": [
"This field is required."
]
}
Редактировать: Решено
Я удалил GroupSerializer
, потому что User
модель имеет отношение "многие ко многим" с Group
, поэтомунам не нужно явно указывать Group
объект
# class GroupSerializer(serializers.ModelSerializer):
# class Meta:
# model = Group
# fields = ('name',)
class UserSerializers(serializers.ModelSerializer):
# groups = GroupSerializer(many=True)
class Meta:
model = User
fields = ('username','first_name', 'last_name','address','contact', 'email', 'date_of_birth', 'branch', 'groups')
def create(self, validated_data):
groups_data = validated_data.pop('groups')
user = User.objects.create(**validated_data)
for group_data in groups_data:
# Group.objects.create(user=user, **group_data)
user.groups.add(group_data)
return user