【发布时间】:2012-03-15 19:57:36
【问题描述】:
共有三种模型:House_Type、House_Option 和 Order
House_Type 模型有 2 个字段:id 和 name
House_Option 有 3 个字段:id、name 和 type,其中 type 是链接到 House_Type 的外键。
最后,Order 由许多字段组成,其中一个是名为“choice”的多对多字段,它链接到 House_Option
其工作方式是 House_Type 具有不同的房屋“类型”:例如,公寓、公寓、独立式房屋、半独立式房屋等。
House_Option 具有每种类型的所有可能选项:例如,对于“公寓”类型,选项 1 位于街道 X,选项 2 位于街道 Y 等等。
在订单模型中,用户必须为每个房屋“类型”选择一个“选项”。所以他们必须选择一个公寓选项,一个房子选项等等。因为这是一个多对多领域,这是可能的。但是我的问题是:例如,如何防止用户选择两个“公寓”选项。我如何限制他们只选择一个(或不选择)?
我试图在 Order 模型中创建一个 def(clean):
def clean(self):
if self.choice.house_option_type.count() > 1:
raise ValidationError('Custom Error Message')
然而,这会返回一个属性错误:“ManyRelatedManager”对象没有属性“house_option_type”
有什么想法吗?
【问题讨论】:
标签: python django django-models django-orm