在Django Rest Fram中创建一个嵌套的、通用的、有序的列表

2024-06-01 01:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要保存可以包含许多促销、许多播放列表或许多apix项目的列表。列表内容的顺序很重要,我收到的JSON将这些项嵌套在“items”下的列表中

apix_项目列表:

{
  "items": [
    "rhmy5prfennp",
    "lpi6ghwfwshp",
    "scb6kn3hbqzd",
  ],
  "title": "Apix Item List",
}

促销列表:

^{pr2}$

我想使用多人关系,但我不认为这会起作用,因为列表的项目需要是通用的。所以我有一个非常简单的列表模型:

^{3}$

以及具有ForeignKeyField和GenericForeignKey字段的中介ListOrder模型:

class ListOrder(TimeStamped):

    content_types = {
        'app_label__in': (
            'apix_items',
            'playlists',
            'promos',
        ),
        'model__in': (
            'apix_item',
            'playlist',
            'promo',
        ),
    }

    index = models.PositiveIntegerField()

    target_type = models.ForeignKey(ContentType, limit_choices_to=content_types)
    target_object = GenericForeignKey('target_type', 'target_id')
    target_id = models.PositiveIntegerField()

    container = models.ForeignKey(List)

我有一种感觉,我需要在我的序列化程序中做一些疯狂的事情,才能让它工作:

class ListOrderSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = ListOrder
        fields = (
            'index',
            'target_object',
            'created', 
            'modified'
        )


class ListSerializer(serializers.HyperlinkedModelSerializer):

    items = ListOrderSerializer(many=True, required=False, source='list_order_set')

    class Meta:
        model = List
        fields = (
            'title',
            'id',
            'items',
            'created', 
            'modified'
        )

然而,我是新来的Django和Django REST,不知道从这里到哪里去。如何保存和检索这些通用的、有序的、嵌套的列表,同时保持中间的ListOrder不可见?在


Tags: 项目模型idtarget列表modeltitlemodels