我想从以下模型的 class Meta
中删除 unique_together
约束。
class x(models.Model):
basket = ...
line_reference = ...
...
class Meta:
unique_together = ("basket", "line_reference")
verbose_name = _('Basket line')
verbose_name_plural = _('Basket lines')
我尝试注释 unique_together
行并运行 makemigrations
但 Django 未检测到任何更改。我使用 View 检查了这种关系约束仍然存在。我怎样才能消除这种关系。我的数据库是 postgresql
。
最佳答案
在 models.py 中进行评论在这里无济于事,因为只有当它看到您创建的关系及其属性发生变化时,迁移才会起作用。 unique_together 是一个约束条件,如果您只是发表评论,迁移不会检测到它们。
我希望您的迁移文件夹和所有生成的迁移都完好无损。
如果任何事情都搞砸了并且您在自己的开发环境中,不会打扰其他任何人,请继续并清除所有迁移并重置数据库.
Else 如果您仍有迁移并且不想删除它们,可以尝试以下方法。 步骤:
- 转到具有
migrations.AlterUniqueTogether
的迁移文件第一次在所有已完成的迁移文件列表中,并评论该文件和所有后续出现的文件。 - 登录到psql shell 和你的数据库。使用
\d+ <table name>
查看所有索引和约束。找到一个具有("basket", "line_reference")
的约束.算了吧。命令将是ALTER TABLE <table_name> DROP CONSTRAINT <name_of_constraint>
- 现在运行
migrate <app_name>
或者migrate
希望这能奏效。
关于python - 从 Meta 类中删除 Unique_together 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721272/