首页 > 解决方案 > [附Pdb结果]表B中的约束有效表A中的“匹配查询不存在”-Python / Django

问题描述

我有几个表如下,它们是根据一个创建的third-party system,应用程序也在这个系统(oracle)的数据库下运行。

约束在A中失败,但Table它适用于Table BTable Bb.c.d.e.nameNoneTable Aa.b.c.d.e.name

class A(models.Model):
    a_id = models.IntegerField(primary_key=True)
    b = models.OneToOneField('B', models.DO_NOTHING, related_name='+')

class B(models.Model):
    b_id = models.IntegerField(primary_key=True)
    c = models.OneToOneField('C', models.DO_NOTHING, related_name='+')

class C(models.Model):
    c_id = models.IntegerField(primary_key=True)
    d = models.OneToOneField('D', models.DO_NOTHING, related_name='+')

class D(models.Model):
    d_id = models.IntegerField(primary_key=True)
    e = models.OneToOneField('E', models.DO_NOTHING, related_name='+')

class E(models.Model):
    e_id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=64)

pdb的结果如下:

(Pdb) B.objects.using('third_party_db').get(c__d__e__name="Dog")
*** general.models.B.MultipleObjectsReturned: get() returned more than one B -- it returned 1673!
(Pdb) A.objects.using('third_party_db').get(b__c__d__e__name="Dog")
*** general.models.A.DoesNotExist: A matching query does not exist.
(Pdb) A.objects.using('third_party_db').get(b__c__pk=1)
*** general.models.A.DoesNotExist: A matching query does not exist.
(Pdb) A.objects.using('third_party_db').get(b__f__pk=1)
*** general.models.A.MultipleObjectsReturned: get() returned more than one A -- it returned 18!

标签: sqldjangoconstraintsdjango-querysetmultiple-databases

解决方案


推荐阅读