#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. данные не могут быть удалены, поскольку они находятся в рабочей среде.