我有一个使用Django 1.10.7
和mysql 14.14 Distrib 5.5.54
如果我这样做:
$ python manage.py makemigrations my_app
我明白了:
'my_app'的迁移:
my_app应用/迁移/ 0023_auto_20180301_1419.py:
- 改变联盟的实地参考
然后:
$ python manage.py migrate
执行的操作:
应用所有迁移:admin,auth,contenttypes,my_app,sessions
正在运行的迁移:
应用my_app.0023_auto_20180301_1419 ...确定
然后,就在我之后:
$ python manage.py makemigrations my_app
我明白了:
'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
我做错了什么?
答案 0 :(得分:5)
提供id_generator
函数作为默认值,而不是它的返回值。每次创建新对象时都会调用该函数。
reference = models.CharField(max_length=20, default=id_generator)