Django Rest Framework CreateAPIView URL-адрес первичного ключа должен исходить из другой модели, а не из уважаемой модели. - PullRequest
0 голосов
/ 11 октября 2019

Сначала посмотрите мои модели:

from django.contrib.auth.models import  User
class Group(models.Model):
    person = models.ManyToManyField(
        User,
        through='PersonGroup',
        related_name='person_of_the_group'
    )


class PersonGroup(models.Model):
    group = models.ForeignKey(
        Group,
        on_delete=models.CASCADE,
        related_name='group_person_of_group'
    )
    person = models.ForeignKey(
        User, 
        on_delete=models.CASCADE
    )

и это мои взгляды:

class AddGroupMembers(CreateAPIView):
    serializer_class = PersonGroupSerializers
    queryset = Group.objects.all()
    lookup_field = 'pk'

    def create(self, request, *args, **kwargs):
        # Make requst data mutable
        if not request.data._mutable:
            request.data._mutable = True

        request.data['person'] = request.user.pk
        request.data['group'] = kwargs['pk']
        serializer = PersonGrouperializers(data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_create(serializer)
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

и это мои сериалы:

class PersonGroupSerializers(ModelSerializer):
    class Meta:
        model = PersonGroup
        fields = '__all__

Я хочуURL-адреса pk будут беспорядочными pk,

http://127.0.0.1:8000/mess/api/v1/mess/<int:mess.pk>/

Я хочу, чтобы когда я достиг конечной точки, я смог создать PersonGroup, где, если вы увидите мои представления, вы узнаете, как я заполняю эту таблицу. .

Я имею в виду, URL-адрес конечной точки будет идентифицирован любым из Group pk, но там я смогу PersonGroup

Надеюсь, вы его получили, может кто-нибудь сказать мне, какчтобы достичь этого?

...