python - 从 Meta 类中删除 Unique_together 关系?

标签 python django postgresql

我想从以下模型的 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/

相关文章:

python - 具有多个域的 django-allauth

python - 在 DataLab 笔记本中使用 Dataproc 和 Spark BigQuery 连接器时出错

python - 如何在nginx自动唤醒virtualenv和gunicorn?

python - Django "ValueErrror: could not find common ancestor of {migrations}"

php - 从php中的2个不同表获取信息时查询错误

postgresql - 什么是兼容 postgres、开源且基于 php 或 python 的好 cms?

python pandas 过滤 true、false 和两者的列

django - 在 Django 中查找多对多类别树的根

jquery - 如何从 Ajax() 获取值到 Django 模板中?

database - 从数据库中检索大量数据的游标替代方法是什么?