繁体   English   中英

如何在Django模型中添加条件字段?

[英]How to add a conditional field in a Django model?

基本上,我想要的是一个满足条件的字段,所以像这样:

class ConditionalModel(models.Model):
    product = models.ForeignKey(product, on_delete=models.CASCADE)
    if category == "laptop":
        cpu_model = models.CharField(max_length=200)

因此,如果我要转到Django管理页面并创建模型的实例,然后从现有“产品”的下拉列表中选择“笔记本电脑”作为产品,那么将有一个新字段可用。 我在文档中找不到关于此的任何内容,因此我想知道是否有可能。

您要的是“技术上”不可能的。 模型与数据库对象相关,在传统的SQL规则下,这是不可能的。 您可以改为使该字段为可选,然后自定义管理页面的功能。

尽管我没有太多经验,但另一个可能的选择是在您不想在数据库中存储NULL值的情况下使用NoSQL数据库。

我认为这是不可能的,因为模型定义了数据库表,因此该列必须存在。

您可以使用关键字blank = True来允许没有该字段的对象。

也许您可以自定义管理界面,以在某些情况下隐藏该字段。

您无法在模型中做到这一点。 您可以将其隐藏在管理面板中,也可以为笔记本电脑制作单独的模型。 或者,您可以将字段设置为空白= True

制作现场选购是不可能的,但你可以使用一个通用模式叫Product以及两个或多个专门的人打了个比方: ElectronicProduct包含场cpu_model和NonElectronicProduct ,这两个专业机型都包含一个OneToOneFieldProduct型号,以保证遗产。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM