从类Meta中删除Unique_together关系?

时间:2015-11-15 15:14:46

标签: python django postgresql

我想从以下型号的unique_together中移除class Meta约束。

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未检测到任何更改。我使用视图检查了这种关系约束仍然存在。我该如何删除这种关系。我的数据库是postgresql

1 个答案:

答案 0 :(得分:1)

如果仅在发现关系及其创建的属性发生变化时,在models.py中进行注释将无助于迁移。 unique_together 是一种约束,如果您只是评论,则迁移不会检测到它们。

我希望您仍然拥有迁移文件夹,并且所有生成的迁移都保持不变。

如果任何事情搞得太糟糕你在自己的开发者环境中不会打扰其他任何人,请继续清除所有迁移并重置数据库

其他如果您仍有迁移且不想删除它们,可以尝试以下操作。 步骤:

  • 转到第一次在所有迁移文件列表中migrations.AlterUniqueTogether的迁移文件,并对该文件以及随后发生的所有内容进行评论。
  • 登录psql shell和数据库。使用\d+ <table name>查看所有索引和约束。找到具有("basket", "line_reference")的一个约束。算了吧。命令为ALTER TABLE <table_name> DROP CONSTRAINT <name_of_constraint>
  • 现在只需运行migrate <app_name>migrate

希望这有效。