【问题标题】:Django makemigrations keeps making the same alterationDjango makemigrations 不断做出同样的改变
【发布时间】:2018-08-09 15:36:21
【问题描述】:

我有一个使用 Django 1.10.7mysql 14.14 Distrib 5.5.54 构建的 django 项目

如果我这样做:

$ python manage.py makemigrations my_app

我明白了:

“my_app”的迁移:
my_app/migrations/0023_auto_20180301_1419.py:
- 更改联赛的字段参考

然后:

$ python manage.py migrate

要执行的操作:
应用所有迁移:admin、auth、contenttypes、my_app、session
运行迁移:
正在应用 my_app.0023_auto_20180301_1419... 好的

然后,紧接着,我做:

$ python manage.py makemigrations my_app

我明白了:

“my_app”的迁移:
my_app/migrations/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

我做错了什么?

【问题讨论】:

    标签: python mysql django python-3.x


    【解决方案1】:

    提供id_generator 函数作为默认值,而不是它的返回值。每次创建新对象时都会调用该函数。

    reference = models.CharField(max_length=20, default=id_generator)

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 2020-05-08
      • 2021-07-07
      • 2016-07-09
      • 2017-09-27
      • 2014-09-14
      • 2016-06-19
      相关资源
      最近更新 更多