Django 忽略模型字段

Django ignores model field

所以,我在做项目时遇到了这个问题。

我错误地在我的一个模型中的一个字段之后放置了一个“,”,而 Django 在忽略该特定字段的同时执行了所有迁移。我花了一段时间才意识到,字段后的一个小“,”是我的字段没有反映在数据库中的原因。

然而,我明白不应该有昏迷,但我有点期待 Django 给我一个错误或至少一个警告。

可能是这样的: "Invalid syntax in models.py near FieldName"

编辑: "one or more model fields are stored as tuple/s are you sure you want to do so?"

但它会忽略该特定字段并继续迁移。我的问题是为什么 Django 会让这种情况发生?这是预期的行为吗,Django 不应该通知这些事情吗?或者为什么要静默传递。

这里有一个例子可以看一下。

class person(models.Model):
    name = models.CharField(max_length=10)
    surname = models.CharField(max_length=10),
    age = models.PositiveIntegerField()

现在,如果您创建迁移并应用它们,Django 将简单地忽略此处的姓氏字段并应用迁移而不会出现任何错误,为什么会这样?

这不是无效的语法。通过添加尾随逗号,您将字段包装在一个单例元组中。所以 person.surname 的类型是 tuple.

例如,如果你写:

>>> a = 1,
>>> a
(1,)
>>> type(a)
<class 'tuple'>

除了模型字段之外,模型还可以包含各种东西:常量、子类、方法等。

可以在所有字段等中进行详尽搜索,以检查元组是否包含模型字段,但这可能需要相当长的时间,可能会导致评估惰性属性,甚至可能会卡在无限循环。

然而,它可能是可以添加到 flake8-django [GitHub] 的东西。