Невозможно создать объект с отношением «многие ко многим» и запросить данные в multipart / form-data - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть пользовательская модель, которая имеет много-много связей с командой модели:

class User(AbstractBaseUser):
"""
    model to store user infomation
"""
.....
team = models.ManyToManyField(
    "team.Team", blank=True,
    related_name="team_member")
.....

Вот фрагмент кода UserSerializer:

class UserSerializer(serializers.ModelSerializer):
"""
    User serializer for user ModelViewSet
"""
.....
team = serializers.PrimaryKeyRelatedField(
     queryset=Team.objects.all(), many=True,
     required=False,
     allow_null=True,
     )
.....

class Meta:
    model = User
    exclude = ()

, и вот представление для того же :

class UserViewSet(viewsets.ModelViewSet):
""" User model view """
.....

def create(self, request, *args, **kwargs):
    request.data._mutable = True
    team = request.data.get('team')
    team = json.loads(team)
    request.data['team'] = team
    serializer = self.get_serializer_class()
    serializer = serializer(data=request.data)
    if serializer.is_valid(raise_exception=True):
        self.perform_create(serializer)
        .....

Ниже прилагаются скриншоты тела запроса с использованием данных формы почтальона:

sample request body

Любой может подсказать мне, что Я здесь делаю не так.

1 Ответ

0 голосов
/ 11 февраля 2020

Попробуйте использовать метод getlist () вместо метода get (), например:

team = request.data.getlist('team[]')
...