Есть три модели: House_Type, House_Option и Order.
Модель House_Type имеет 2 поля: id и name
House_Option имеет 3 поля: идентификатор, имя и тип, где тип — это внешний ключ, связанный с House_Type.
и, наконец, Order состоит из множества полей, одно из которых — это поле ManytoMany, называемое «выбор», которое ссылается на House_Option.
Это работает так, что House_Type имеет разные «типы» домов: например, квартира, квартира, отдельный дом, двухквартирный дом и т. д.
House_Option имеет все возможные варианты для каждого типа: так, например, для типа «квартира» у вас есть вариант 1, расположенный на улице X, вариант 2, расположенный на улице Y и т. д..
В модели Order пользователь должен выбрать один «вариант» каждого «типа» дома. Таким образом, они должны выбрать один вариант квартиры, один вариант дома и т. д. Поскольку это поле ManytoMany, это возможно. Однако мой вопрос: как мне запретить пользователю выбирать, например, ДВА варианта «квартиры». Как мне ограничить их выбором только одного (или ни одного) из каждого?
Я пытался создать определение (чистое) в модели Order:
def clean(self):
if self.choice.house_option_type.count() > 1:
raise ValidationError('Custom Error Message')
Однако это возвращает ошибку атрибута: объект «ManyRelatedManager» не имеет атрибута «house_option_type».
Любые идеи?