![](/img/trans.png)
[英]Django migration fails with InvalidForeignKey: “unique constraint” error for “django_site”
[英]PostgreSQL psycopg2 error: there is no unique constraint / InvalidForeignKey
我有以下型号:
class Contact(models.Model):
email = models.EmailField()
class EventList(models.Model):
event_contacts = models.ManyToManyField(Contact, through=EventMembership)
class EventMembership(models.Model):
event_list = models.ForeignKey(EventList, null=True, on_delete=models.PROTECT)
event_contact = models.ForeignKey(Contact, null=True, blank=False, on_delete=models.PROTECT)
但是,在完全干净的数据库上为EventMembership
应用迁移时, EventMembership
以下错误:
psycopg2.errors.InvalidForeignKey:没有唯一约束匹配给定键的引用表“contacts_contact”
class Migration(migrations.Migration):
initial = True
dependencies = [
('lists', '0001_initial'),
('contacts', '0002_auto_20200308_2253'),
]
operations = [
migrations.CreateModel(
name='EventMembership',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('event_contact', apps.utils.django_multitenant.fields.TenantForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='contacts.Contact')),
('event_list', apps.utils.django_multitenant.fields.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='lists.EventList'))
]
]
表contacts_contact
显然在id
有一个唯一的约束作为主键。
什么可能导致此错误? / 我该如何调试?
你只需要一步一步来。 现在,您正尝试与尚未在数据库中的表创建外键关系。 因此,将除 Contact 模型之外的所有内容注释掉,应用迁移,然后添加 EventList 等。如果您依赖于 Contact 模型首先运行的事实,那么在这种情况下它没有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.