Django Rest Framework — настройка представления списка по умолчанию для отображения уникальных значений для множества полей

#django #django-models #django-rest-framework

#django #django-модели #django-rest-framework

Вопрос:

Мои модели связаны с несколькими полями, используя множество полей и свойство «through», что-то вроде этого:

 class KLA():
    version = ForeignKey("Version", on_delete=CASCADE)
    stages = ManyToManyField('Stage',through='KlasOutcomes', blank=True)
    objectives = ManyToManyField('Objective', through='KlasOutcomes', blank=True)
    outcomes = ManyToManyField('Outcome', through='KlasOutcomes', blank=True)

class KlaSerializer(SerializerCacheMixin, ModelSerializer):
    version = VersionSerializer(many=False, read_only=True)

    class Meta:
        model = KLA
        list_serializer_class = CachedListSerializer
        fields = ('outcomes', 'version', 'stages')
  

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

Другими словами, «этапы» должны содержать только одну запись 23 в списке.

Я попытался использовать следующее, чтобы вернуть уникальные этапы для моей модели:

 @property
def stages(self):
    return self.stage_set.all()
  

Но это не помогает, выдает следующую ошибку:
введите описание изображения здесь

Комментарии:

1. Вы удаляете уникальное значение ??. затем, stages = ManyToManyField('Stage',through='KlasOutcomes', blank=True,unique=True)

2. получение KLA.stages: (fields.E330) ManyToManyFields cannot be unique. с unique=True

3. Пожалуйста, удалите уже данные из таблицы, а затем вставьте. Эта ошибка будет отображаться при наличии того же значения

4. Полная строка в таблице уникальна, но я не хочу видеть дублирующиеся значения в результате списка JSON / api. Этот API также будет использоваться клиентом в формате JSON. данные не могут быть удалены, поскольку они находятся в рабочей среде.