Вложенный сериализатор не возвращает ожидаемые значения Django Rest Framework

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

Вот пример данных, которые я хотел бы получить.

{
    "count": 2536,
    "next": "http://127.0.0.1:8000/esd/salesreportsdetail2/?page=2",
    "previous": null,
    "results": [
        {
            "id": 2,
            "name": "A0012",
            "sales_report_parts": [
                {
                    "id": 5,
                    "date": "2021-08-31T00:00:00Z",
                    "sales_report_items": [
                        {
                            "quantity": 1,
                            "site": "FBA"
                        },
                        {
                            "quantity": 3,
                            "site": "Vendor"
                        },
                        {
                            "quantity": 4,
                            "site": "Main"
                        }
                    ]
                }
            ]
        }
    ]
}

Но вместо этого я продолжаю получать все элементы отчета о продажах для каждого товара.

{
    "count": 2536,
    "next": "http://127.0.0.1:8000/esd/salesreportsdetail2/?page=2",
    "previous": null,
    "results": [
        {
            "id": 2,
            "name": "A0012",
            "sales_report_parts": [
                {
                    "id": 5,
                    "date": "2021-08-31T00:00:00Z",
                    "sales_report_items": [
                        {
                            "quantity": 1,
                            "site": "FBA"
                        },
                        {
                            "quantity": 3,
                            "site": "Vendor"
                        },
                        {
                            "quantity": 4,
                            "site": "Main"
                        },
                        {
                            "quantity": 45,
                            "site": "FBA"
                        },
                        {
                            "quantity": 102,
                            "site": "Vendor"
                        },
                        {
                            "quantity": 161,
                            "site": "Main"
                        },
                        {
                            "quantity": 7,
                            "site": "FBA"
                        },... and so on gets me all of the data

Ниже приведены мои модели, представления и сериализатор. Любая помощь будет очень признательна, спасибо заранее!

models.py

    class SalesReport(models.Model):
        month = models.PositiveSmallIntegerField(null=False)
        year = models.PositiveSmallIntegerField(null=False)
        date = models.DateTimeField(null=False)
        updated_at = models.DateTimeField(null=True)
        parts = models.ManyToManyField(
            "Part", through="SalesReportItem", related_name="sales_report_parts"
        )

    class SalesReportItem(models.Model):
        part = models.ForeignKey(
            "Part", on_delete=models.CASCADE, related_name="sales_report_part"
        )
        quantity = models.IntegerField(null=False)
        site = models.CharField(max_length=10, choices=SITE_CHOICES, null=False)
        sales_report = models.ForeignKey(
            SalesReport, on_delete=models.CASCADE, related_name="sales_report_items"
        )

    class Part(models.Model):
        id = models.IntegerField(primary_key=True, null=False)
        name = models.CharField(max_length=200, null=False)
        updated_at = models.DateTimeField(null=True)
        crea`enter code here`ted_at = models.DateTimeField(null=True)
        sales_reports = models.ManyToManyField(
            SalesReport, through="SalesReportItem", related_name="part_sales_report"
        )

views.py


class SalesReportDetailViewSet(ModelViewSet):
    queryset = SalesReport.objects.prefetch_related("sales_report_items__part").all()
    serializer_class = SalesReportDetailSerializer


class SalesReportDetailViewSet2(ModelViewSet):
    queryset = Part.objects.prefetch_related(
        "sales_report_parts__sales_report_items"
    ).all()
    serializer_class = PartDetailSerializer
    pagination_class = TestPagination

serializers.py

class SalesReportItemDetailSerializer2(serializers.ModelSerializer):
    class Meta:
        model = SalesReportItem
        fields = ["quantity", "site"]


class SalesReportDetailSerializer2(serializers.ModelSerializer):
    sales_report_items = SalesReportItemDetailSerializer2(many=True)

    class Meta:
        model = SalesReport
        fields = ["id", "date", "sales_report_items"]


class PartDetailSerializer(serializers.ModelSerializer):
    sales_report_parts = SalesReportDetailSerializer2(many=True)

    class Meta:
        model = Part
        fields = ["id", "name", "sales_report_parts"]
Вернуться на верх