Django makemigrations继续进行相同的更改 [英] Django makemigrations keeps making the same alteration

查看:53
本文介绍了Django makemigrations继续进行相同的更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆