إرجاع قائمة متداخلة لنموذج واحد

0

لدي جدول بحث يحتوي على فئات الدورات التدريبية والفئات الفرعية المنفصلة:

{
        "id": 138,
        "lookup": "CRS_CTGRY",
        "attr1": "Arts and Humanities",
        "attr2": "الفنون والعلوم الإنسانية",
        "attr3": null,
        "attr4": null,
        "attr5": null,
        "editable": 1
    },

{
        "id": 155,
        "lookup": "CRS_SB_CTGRY",
        "attr1": "Photography",
        "attr2": "النصوير",
        "attr3": "138",
        "attr4": null,
        "attr5": null,
        "editable": 1
    },

العلاقة بينهما هي ذلك attr3 = id_of_the_category && attr1 = CRS_SB_CTGRY

أريد دمجها معًا في قائمة واحدة مثل:

{"id":138,"
"lookup":"CRS_CTRGY",
"name":"Arts and Humanities",
"subcategories":{"id": 154,
                 "lookup": "CRS_SB_CTGRY",
                  "attr1": "Music",
                  "attr2": "الموسيقي",
                  "attr3": "138",
                  "attr4": null,
                   "attr5": null,
                    "editable": 1
}}

هذا هو model.py بلدي:

class Lookups(models.Model):
lookup = models.CharField(max_length=45)
attr1 = models.CharField(max_length=100)
attr2 = models.CharField(max_length=100, blank=True, null=True)
attr3 = models.CharField(max_length=100, blank=True, null=True)
attr4 = models.CharField(max_length=100, blank=True, null=True)
attr5 = models.CharField(max_length=100, blank=True, null=True)
editable = models.IntegerField(blank=True, null=True)

class Meta:
    managed = True
    db_table = 'lookups'
    unique_together = (('lookup', 'attr1', 'attr2', 'attr3', 'attr4', 'attr5'),)

كيف يمكنني فعل ذلك؟ وأين يضع الرمز؟ في فئة التسلسل؟

2 الاجابة

0

تحتاج إلى تطبيق مُسلسل لفئتك الفرعية:

 class SubcategorySerializer(serializers.ModelSerializer):
      class Meta:
          model = Lookups
          fields = ( 'id', 'lookup', 'attr1', 'attr2', 'attr3',)

واستخدمه في Serializer الفئة الخاصة بك عند تحديد جميع الفئات الفرعية ذات الصلة:

 class CategorySerialier(serializers.ModelSerializer): 
      subcategories =  serializers.SerializerMethodField(read_only=True)

      class Meta:
          model = Lookups
          fields = ( 'id', 'lookup', 'subcagories')

      def get_subcategories(self, obj):
          subs = Lookups.objects.filter(attr3=obj.id)
          return SubcategorySerializer(subs,many=True).data
:مؤلف
0

إذا كان هذان نموذجان ، أحدهما يتسلسل داخل الآخر. http://www.django-rest-framework.org/api-guide/relations/#nested-relationships

:مؤلف
فوق
قائمة طعام