Django makemigrations继续进行相同的更改 [英] Django makemigrations keeps making the same alteration
问题描述
我有一个用 Django 1.10.7
和 mysql 14.14 Distrib 5.5.54
如果我这样做:
$ python manage.py makemigrations my_app
我得到:
"my_app"的迁移:
my_app/migrations/0023_auto_20180301_1419.py:
-更改联赛中的场地参考
Migrations for 'my_app':
my_app/migrations/0023_auto_20180301_1419.py:
- Alter field reference on league
然后:
$ python manage.py migrate
要执行的操作:
应用所有迁移:管理员,身份验证,内容类型,my_app,会话
运行迁移:
正在应用my_app.0023_auto_20180301_1419 ...确定
Operations to perform:
Apply all migrations: admin, auth, contenttypes, my_app, sessions
Running migrations:
Applying my_app.0023_auto_20180301_1419... OK
然后,我就这样做:
$ python manage.py makemigrations my_app
我得到:
"my_app"的迁移:
my_app/migrations/0024_auto_20180301_1421.py:
-更改联赛中的场地参考
Migrations for 'my_app':
my_app/migrations/0024_auto_20180301_1421.py:
- Alter field reference on league
如您所见,它和以前一样.似乎django不能很好地进行迁移,或者迁移得很好,但是什么也没检测到.
As you can see it is the same alteration as before. It seems that django does not make the migrations well, or does but does not detect anything.
在 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
我做错了什么?
推荐答案
提供 id_generator
函数作为默认值,而不是其返回值.每次创建新对象时都会调用该函数.
Provide the id_generator
function as the default value instead of the returned value of it. The function will be called every time when the new object is created.
reference = models.CharField(max_length = 20,default = id_generator)
这篇关于Django makemigrations继续进行相同的更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!