我有一个使用Django 1.10.7
和mysql 14.14 Distrib 5.5.54
构建的django项目
如果我这样做:
$ python manage.py makemigrations my_app
我得到:
"my_app"的迁移:
我的应用程序/迁移/0023_auto_20180301_1419.py:
- 更改联赛的字段引用
然后:
$ python manage.py migrate
要执行的操作:
应用所有迁移:管理员,身份验证,内容类型,my_app,会话
正在运行迁移:
正在应用我的应用程序.0023_auto_20180301_1419 ...确定
然后,就在那之后,我想:
$ python manage.py makemigrations my_app
我得到:
"my_app"的迁移:
我的应用程序/迁移/0024_auto_20180301_1421.py:
- 更改联赛的字段引用
正如你所看到的,这是和以前一样的改变。看起来django没有很好地进行迁移,或者做了但没有检测到任何东西。
在models.py
中,类如下所示:
class League(models.Model):
name = models.CharField(max_length=50)
id_creator = models.ForeignKey('auth.User', on_delete=models.CASCADE)
id_tour = models.ForeignKey('Tour', on_delete=models.CASCADE)
step = models.IntegerField(default=0)
creation_date = models.DateTimeField(default=timezone.now)
reference = models.CharField(max_length=20, default=id_generator())
def __str__(self):
return self.name
我做错了什么?
2条答案
按热度按时间rmbxnbpk1#
提供
id_generator
函数作为默认值,而不是返回值,每次创建新对象时都会调用该函数。reference = models.CharField(max_length=20, default=id_generator)
mfuanj7w2#
Django的移民们一直在做同样的改变
我打这个由于我自己的愚蠢,希望这将保存一点时间的人。我最终没有同样的问题作为OP,但确实有同样的症状。
我已经有了一个州/国家对的列表,所以我发现在创建一个新的模型类时引用它是很方便的,我使用了一个集合生成器来提取国家,同时消除重复:
Django一直想修改list_country上的字段,一遍又一遍。
然后我注意到每次迁移都只是重新排序国家。当然,***顺序在集合***中是任意的。我应用了sorted(),我的问题就解决了。