【发布时间】:2016-03-27 19:12:33
【问题描述】:
我使用inspectdb创建了我的模型,当django生成以下内容时让我感到奇怪,因为只有一个这样的索引,但我让它成为了
unique_together = (('p_id', 'v_id', 'sku',), ('p_id', 'v_id', 'sku',))
现在我正在尝试将“sku2”添加到此索引中,而“迁移”失败并显示以下内容:
File "/home/user/.pyenv/versions/2.7.11/envs/master2/lib/python2.7/site-packages/django/db/backends/base/schema.py", line 347, in _delete_composed_index
", ".join(columns),
ValueError: Found wrong number (2) of constraints for vendor_products(p_id, v_id, sku)
这是我的模型:
class Products(models.Model):
p_id = models.OneToOneField(MasterProducts, models.DO_NOTHING, db_column='p_id', primary_key=True)
v_id = models.ForeignKey('Sellers', models.DO_NOTHING, db_column='v_id')
sku = models.TextField()
sku2 = models.TextField(blank=True, null=True)
class Meta:
managed = True
db_table = 'products'
unique_together = (('p_id', 'v_id', 'sku',), ('p_id', 'v_id', 'sku',))
我尝试将 unique_together 更改为 (('p_id', 'v_id', 'sku',),) 和 ('p_id', 'v_id', 'sku',) 结果相同。
我也尝试使用 db 手动删除唯一索引并使用 django 重新创建它,但它仍然不允许我添加 sku2。
为什么会这样,我该如何解决?
【问题讨论】:
-
通过关键字我猜你正在使用
django-south。不要使用它。它从 1.7 开始包含在 Django 中。 -
使用迁移,我改变了它
-
为什么要设置两次约束?
-
我没有'inspectdb'这样制作,它似乎与问题无关
-
您的示例有问题。模型
Products与Products具有一对一的关系?它甚至不会编译。请检查。
标签: python django django-migrations