Django - Сериализация промежуточной модели M2M (для запросов POST, PUT и GET) - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь включить данные из промежуточной модели моего поля M2M в свои вызовы api, чтобы я получал данные из поля M2M в моем запросе GET, а также мог выполнять POST и PUT для этого промежуточного model, когда я выполняю запросы POST и PUT для моей базовой модели.

Вот мой models.py

class CustomerInformation(models.Model):
    customer_id = models.AutoField(primary_key=True)
    customer_name = models.CharField(max_length=100)
    history = HistoricalRecords()

class SalesProject(models.Model):
    sales_project_id = models.AutoField(primary_key=True)
    sales_project_name = models.CharField(max_length=100)
    customer_information = models.ManyToManyField('CustomerInformation', through='Project_Customer')
    history = HistoricalRecords()

class Project_Customer(models.Model):
    project = models.ForeignKey('SalesProject', on_delete=models.SET_NULL, null=True)
    customer = models.ForeignKey('CustomerInformation', on_delete=models.SET_NULL, null=True)
    history = HistoricalRecords()

Я использую наборы представлений и сериализаторы моделей для моего проекта SalesProject, как показано ниже

class SalesProjectViewSet(viewsets.ModelViewSet):
    serializer_class = SalesProjectSerializer
    queryset = SalesProject.objects.all()


class SalesProjectSerializer(serializers.ModelSerializer):
    class Meta:
        model = SalesProject
        fields = '__all__'

Как я могу получить подробную информацию о CustomerInformation, привязанном к экземпляру SalesProject, через поле M2M? Когда я использую это для получения данных, в данных SalesProject отображаются только другие поля, но отсутствует поле клиента. Кроме того, когда я отправляю данные POST, как я могу отправить как данные SalesProject, так и экземпляры клиентов, которые я хочу связать M2M с этим экземпляром SalesProject, в 1 запросе? В принципе, есть ли у меня какой-либо способ получить и опубликовать данные, как обычно, до вызова метода «сквозной» для поля M2M?

Всем спасибо, вся помощь приветствуется!

...