gpt4 book ai didi

python - 如何更改 django 子类中的 max_length ?

转载 作者:行者123 更新时间:2023-12-01 00:00:06 24 4
gpt4 key购买 nike

我在 django 中有以下模型:

class Node(models.Model):
name = models.CharField(max_length=255)

以及上述模型的子类:

class Thingy(Node):
name = models.CharField(max_length=100)
otherstuff = models.CharField(max_length=255)

此设置的问题在于,虽然一切正常,但对数据库的查看显示,syncdb 已创建了两个表。一个名为 appname_node,其中有一列名为 name,另一个名为 appname_thingy,包含两列:name其他东西。创建新对象时,name 值会复制到两个表中...如果您深入了解规范化的整个概念,那就不太酷了:-)

有人可以向我解释一下如何修改“Thingy”中“name”属性的 max_length 值而不重新定义它吗?

最佳答案

您的实现完全错误,这不是您应该如何编写父类和子类的方式。在父类或子类中定义名称,如果在父类中定义它,则无法在子类中再次定义,因为将创建新字段。因此,如果您想更改子级中的 max_length ,那么我建议您在子级中声明 name ,以便任何从 node 继承的类都将使用自己的 max_length 设置自己的名称。

正确的实现是

class Node(models.Model):
#other class attributes

子类应该继承父类的属性并添加自己的东西。

class Thingy(Node):
name = models.CharField(max_length=100)
otherstuff = models.CharField(max_length=255)

现在,当您查询时,您只能得到一个名称,而不是两个。

关于python - 如何更改 django 子类中的 max_length ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1931404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com