Django休息模型m2m顺序存储

时间:2018-04-24 13:45:46

标签: django django-models django-rest-framework

我有一个模型任务,我想创建另一个模型 Sequence ,它将保存有序的任务序列,例如sequence1 - > Task1,Task3,Task 7; sequence2 - > Task1,Task2,Task4,Task7等。

序列可以有多个任务任务可以有多个序列。

如何创建这样的模型以确保它保持有序序列?

1 个答案:

答案 0 :(得分:0)

创建具有M2M字段关系的模型。然后,您可以创建一个序列化程序。在序列化程序中,您可以选择从M2M字段格式化数据:

StringRelatedField

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.StringRelatedField(many=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

这样做:

{
    'album_name': 'Things We Lost In The Fire',
    'artist': 'Low',
    'tracks': [
        '1: Sunflower',
        '2: Whitetail',
        '3: Dinosaur Act',
        ...
    ]
}

PrimartKeyRelatedField

class AlbumSerializer(serializers.ModelSerializer):
    tracks = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = Album
        fields = ('album_name', 'artist', 'tracks')

执行此操作:

{
    'album_name': 'Undun',
    'artist': 'The Roots',
    'tracks': [
        89,
        90,
        91,
        ...
    ]
}

还有更多选择。更多read the Docs DRF

PD:默认情况下,M2M字段中的数据按照对象的创建方式排序