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