更改django models related_name属性是否需要南迁移?

Tor*_*ups 14 django django-models django-south

我有一个带有ForeignKey的简单django模型

class FooModel(models.Model):
    foo = models.ForeignKey('Foo', related_name="foo_choices")
    bar = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

related_name属性已经存在,但我想更改它.这种变化是否需要任何类型的迁移?当我在修改related_name后运行schemamigration管理命令时,我得到"似乎没有任何改变",但我想验证.

kar*_*ikr 15

您不需要迁移.

相关名称是用于从相关对象返回到此对象的关系的名称(反向关系).

related_name与数据库无关.它被Django的ORM用于获取查询集结果,因此如果更改related_name模型字段上的属性,则不需要迁移.

这里有一些关于使用的附加文档related_name

  • 那么为什么Django会在related_name改变时创建迁移文件呢? (4认同)
  • @MarshallX 这张票可能会阐明您的问题 https://code.djangoproject.com/ticket/25601 。但我仍然想知道有一种方法可以标记此类迁移在仅更改 related_name 时不应发出任何 sql(sqlmigrate) 。 (2认同)

Rau*_*qss 12

上面接受的答案现在已经过时了。

alter field foreign_key_field on model当外键字段的相关名称发生更改时,Django 会进行创建和迁移。