以下是模型的逻辑:
是否可以指定每个产品在模型文件中的类别?例如:我可以设置模型,以便shirt
只能是clothing
而不是其他吗?
这是我到目前为止(它没有验证):
class Category(models.Model):
CATEGORY_CHOICES = (
('CLOTHING', 'Clothing'),
('FURNITURE', 'Furniture'),
)
category = models.CharField(choices=CATEGORY_CHOICES)
class Shirt(Product):
category = models.ForeignKey(Category, default=CATEGORY_CHOICES.CLOTHING)
class Table(Product):
category = models.ForeignKey(Category, default=CATEGORY_CHOICES.FURNITURE)
我是新来的。谢谢你的帮助!
答案 0 :(得分:1)
您可以使用任意规则验证模型。因此,写一个验证规则,检查所有衬衫是否保存在类别服装中。
对于用户输入,请创建仅提供与产品对应的选项的表单。
祝你好运!答案 1 :(得分:1)
我建议您花一些时间来采用最近添加的model validation,而不是自动作为表单验证(您必须自己调用clean*
方法,可能在save
内部) ,您将获得可在模型和表单级别使用的DRY验证。
答案 2 :(得分:0)
您可以使用callables将实例作为默认值
像这样(未经测试的代码):
class Shirt(Product):
def getClothingInstance():
return Category.objects.get(category=Category.CATEGORY_CHOISES['CLOTHING'])
category = models.ForeignKey(Category, default=getClothingInstance)