所以,当我从事一个项目时碰到了这个问题。
我在我的一个模型中的一个字段之后错误地加了一个“,”,而Django在忽略该特定字段的同时进行了所有迁移。我花了一段时间才意识到该字段负责我的字段未反映在数据库中。
但是,我知道应该不会出现昏迷,但我有点期待Django给我一个错误或至少一个警告。
类似的东西: “ ModelName.py中FieldName附近的语法无效”
编辑: “您确定要将一个或多个模型字段存储为元组吗?”
但它会忽略该特定字段并继续进行迁移。我的问题是,为什么Django让这种情况发生?这是预期的行为,Django是否不应该通知此类情况?或为什么要默默地传递它。
这里是一个例子。
class person(models.Model):
name = models.CharField(max_length=10)
surname = models.CharField(max_length=10),
age = models.PositiveIntegerField()
现在,如果您创建迁移并应用迁移,那么Django会简单地忽略此处的姓氏字段并应用迁移而不会出现任何错误,为什么会这样呢?
答案 0 :(得分:2)
这不是无效语法。通过添加结尾逗号,可以将字段包装为单例元组。因此person.surname
的类型为tuple
。
例如,如果您写:
>>> a = 1,
>>> a
(1,)
>>> type(a)
<class 'tuple'>
除了模型字段外,模型还可以包含各种东西:常量,子类,方法等。
一个人可以在所有字段中进行详尽的搜索,等等,以检查元组是否包装了模型字段,但这可能会花费大量时间,可能会导致评估惰性属性,甚至可能陷入无限循环。
不过,可以将其添加到flake8-django
[GitHub]中。