Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何在Django中将类型硬编码到模型中_Database_Django_Django Models_Relational Database_Foreign Key Relationship - Fatal编程技术网

Database 如何在Django中将类型硬编码到模型中

Database 如何在Django中将类型硬编码到模型中,database,django,django-models,relational-database,foreign-key-relationship,Database,Django,Django Models,Relational Database,Foreign Key Relationship,以下是模型的逻辑: 类别。有几类,;每个类别可以包含多个产品 产品。有几种产品;每个产品只能有一个类别 是否可以在模型文件中指定每个产品的类别?例如:我是否可以设置模型,使衬衫只能是衣服而不能是其他 以下是我到目前为止得到的信息(它无法验证): 这方面我是新手。谢谢你的帮助 您可以使用任意规则在保存时验证模型。因此,编写一个验证规则,检查所有衬衫是否保存在类别“衣服”中 对于用户输入,创建一个仅提供与产品对应的选项的表单 祝你好运 您可以使用callables将instance作为默认值提供 类

以下是模型的逻辑:

  • 类别。有几类,;每个类别可以包含多个产品
  • 产品。有几种产品;每个产品只能有一个类别
  • 是否可以在模型文件中指定每个产品的类别?例如:我是否可以设置模型,使
    衬衫
    只能是
    衣服
    而不能是其他

    以下是我到目前为止得到的信息(它无法验证):


    这方面我是新手。谢谢你的帮助

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

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


    祝你好运

    您可以使用callables将instance作为默认值提供

    类似于以下内容(未经测试的代码):


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

    此级别的验证应在代码中完成。我同意@Sid的观点,硬编码这种东西将克服复杂性,并且不是非常流畅的设计,这属于模型,可能是表单验证感谢您的输入!快速澄清问题:那么有必要开一个分类课吗?或者我可以定义一个方法,比如def category(self)来指定特定模型的类别吗?如果要验证允许的产品类别,似乎需要在某个地方定义它们。如果我这样做,我会创建一个方法,返回给定产品允许的类别,并用它填充显示表单中的选择字段。我可能也会做验证作为检查。
    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)
    
    class Shirt(Product):
    
      def getClothingInstance():
        return Category.objects.get(category=Category.CATEGORY_CHOISES['CLOTHING'])
    
      category = models.ForeignKey(Category, default=getClothingInstance)