0

以下是模型的逻辑:

  1. 类别。有几个类别;每个类别可以包含多个产品。
  2. 产品。有几种产品;每个产品只能有一个类别。

是否可以在模型文件本身中指定每个产品的类别?例如:我可以将模型设置为 ashirt只能是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)

我是新来的。谢谢您的帮助!

4

3 回答 3

1

我建议您花一些时间来采用最近添加的模型验证,虽然它不像表单验证那样自动(您必须clean*自己调用方法,可能在内部save),但您将获得可用于模型和表单级别的 DRY 验证。

于 2012-07-17T23:54:08.933 回答
1

您可以使用任意规则在保存时验证您的模型。因此,编写一个验证规则来检查所有衬衫是否都保存在服装类别中。

对于用户输入,创建一个只提供与产品对应的选项的表单。

祝你好运!

于 2012-07-17T20:14:47.190 回答
0

您可以使用可调用对象将实例作为默认值

像这样的东西(未经测试的代码):

class Shirt(Product):

  def getClothingInstance():
    return Category.objects.get(category=Category.CATEGORY_CHOISES['CLOTHING'])

  category = models.ForeignKey(Category, default=getClothingInstance)
于 2012-07-17T20:45:09.367 回答