postgresql 在Django + Postgres中,如何为模型添加额外的列

wgx48brx  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(2)|浏览(144)

我需要添加额外的栏目,如果产品是在一个特定的类别。我想到了使用JSON或允许空列,但是有没有更好的方法来处理这种情况呢?我用的是PostgreSQL数据库。这是我的模型结构。

class Product(Base):
    def __str__(self):
        return self.name
    name = models.CharField(max_length=255, unique=True, validators=[validate_alphanumeric])
    is_safari = models.BooleanField(default=True)

Product表已Map到如下代理

class Agent(Base):
    def __str__(self):
        return self.agent_user.username
    agent_user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.RESTRICT,
    )
    country = CountryField()
    city = models.CharField(max_length=255)

AgentProduct模型

class AgentProduct(Base):
   
    agent = models.ForeignKey(
        Agent,
        on_delete=models.RESTRICT,
    )
    product = models.ForeignKey(
        Product,
        on_delete=models.RESTRICT,
    )
    a_rate = models.IntegerField()
    c_rate = models.IntegerField()

如果is_safari对于AgentProduct模型是真的,我想添加一些额外的信息,如

per_v_charge = models.IntegerField()
extra_p_charge = models.IntegerField()
# something like this
ukdjmx9f

ukdjmx9f1#

1.首先添加可空字段。
1.等待A。需要添加越来越多的可空列和B。使用这些可空字段构建越来越多的查询。
1.根据收集的数据和用例证据,评估什么是最好的,是将它们保留为可空列还是添加JSON字段。
有两个类别可以让你和应用程序最好的选择:
评估什么是最适合您的,就是定义什么是其他开发人员易于阅读和理解的;通常,代码较少且易于文档化的解决方案可能总是更好。
要评估什么对应用程序最好,就是定义Django或postgres要处理的东西,现在postgres处理JSON字段非常好,Django支持它们,就好像它们对ORM很重要一样。但是,您必须再次抛出一致的模式,以使其高效。

cyej8jka

cyej8jka2#

你可以使用mongoDb来实现无模式数据库结构。你可以用它为不同的“行”创建不同的“列”。

相关问题