基本上,我想要的是在满足条件时可用的字段,如下所示:
class ConditionalModel(models.Model):
product = models.ForeignKey(product, on_delete=models.CASCADE)
if category == "laptop":
cpu_model = models.CharField(max_length=200)
因此,如果我要进入Django管理页面并创建模型的实例,然后从现有“产品”的下拉列表中选择“laptop”作为产品,则可以使用新字段。我在文档中找不到任何相关内容,所以我想知道它是否可能。
答案 0 :(得分:3)
您所要求的并非“技术上”可行。模型与数据库对象相关,在传统的SQL规则下,这是不可能的。您可以改为使该字段可选,然后自定义管理页面的功能。
另一个可能的选择,虽然我对它没有多少经验,但是如果您不想在数据库中存储NULL值,则使用NoSQL数据库。
答案 1 :(得分:3)
我不认为这是可能的,因为模型定义了数据库表,因此列必须存在。
您可以使用关键字blank = True来允许没有此字段的对象。
也许您可以自定义管理界面以在某些情况下隐藏字段。
答案 2 :(得分:0)
你不能在模特中这样做。 您可以在管理面板中隐藏它,也可以为笔记本电脑制作单独的模型。 或者您可以创建字段blank=True
答案 3 :(得分:0)
不可能将字段设为可选,但是您可以使用称为Product
的通用模型以及两个或更多个专门的模型,例如:ElectronicProduct
,其中包含字段cpu_model和NonElectronicProduct
,这两个专用模型必须包含一个OneToOneField
模型到Product
模型,以确保继承。