当前位置: 首页 > 知识库问答 >
问题:

Django 1.4多数据库外键关系(1146,“表'other.orders\u iorder'不存在”)

计燕七
2023-03-14

我有一个外键从一个模型到另一个模型在不同的数据库(我知道我不应该这样做,但如果我适当照顾参考完整性,它不应该是一个问题)。

问题是,一切正常...所有的系统做(关系在任何方向,路由器照顾它),但当我试图删除引用的模型(它没有外键属性)...Django仍然希望通过关系来检查关系是否为空,但是相关对象在另一个数据库中,所以它在这个数据库中找不到对象。

我试着在_delete=models上设置。什么都不做没有成功。还试图清除关系(但恰好clear没有“使用”参数,因此我认为它也不起作用)。还尝试使用delete清空关系(对象…),未成功。

现在我很确定问题出在super(Object,self).delete()中,我不能执行super(Object,self).delete(使用=other_数据库),因为self对象不在另一个数据库中,而只是RelatedManager。所以我不知道如何让Django理解我甚至不想检查这个关系,顺便说一下,在super(Object,self).delete()请求之前,这个关系已经被清空了。

我在想是否有什么方法可以让Django避免这种检查。

更多图形:

DB1:默认数据库(订单应用)

从django.db从shop.models导入订单导入模型

类别IOrder(models.Model):

name = models.CharField(max_length=20, unique=True, blank=False, null=False)
order = models.ForeignKey(Order, related_name='iorders', blank=True, null=True)

DB2:“其他”数据库

类顺序(models.Model):

description = models.CharField(max_length=20, blank=False, null=False)

def delete(self): 
    # Delete iOrder if any
    for iorder in self.iorders.using('default'):
        iorder.delete()

    # Remove myself
    super(Order, self).delete()

当调用super(Order.self).delete()时会出现问题,然后它无法在此数据库中找到表(iorder)(因为它处于“默认”状态)

一些想法?提前感谢,

共有1个答案

简成仁
2023-03-14

我已经解决了使用原始SQL delete命令更改super(Order,self).delete()的问题。无论如何,我很想知道是否有一个更合适的方法来做这件事

 类似资料:
  • 我有3个模型在我的项目: 用户型号代码: 职业标准守则 迁移: 用户职业模型代码 迁移: 当我尝试这个代码时,我通过他的名字搜索用户,并得到职业名称,然后计算该职业的用户。 代码: 我收到错误消息: 照明\数据库\查询异常:SQLSTATE[23000]:完整性约束违反:1052列'id'在其中子句是含糊不清的(SQL:选择*从存在的职业(选择*从用户内连接user_professionsuser

  • 但是,我似乎搞错了一些事情,因为当Hibernate创建表时,会创建多个外键,如下所示: 信息:HHH10001501:从JdbcConnectionAccess[org.hibernate.engine.jdbc.env.internal.jdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess@5E5595F3]获得的用于(

  • 母实体 子实体 代码持久化 请告诉我这些步骤是否正确。我有以下例外。并且无法理解为什么父id在子表中不可用 原因:org.hibernate.exception.ConstraintViolation异常:无法将值NULL插入到列PARAM_REF_ID,表PARAM中;列不允许空值。INSERT失败。

  • 问题内容: 我正在使用Windows XP。我正在使用其内置的create table功能在phpMyAdmin中创建一个表,我的数据库名称为。 它生成以下代码: 并且出现以下错误: 可能是什么问题? 问题答案: 我过去也有同样的问题。将数据库文件移动到新位置并更新mysql服务器后,一切都发生了。具有InnoDB引擎的所有表都从我的数据库中消失了。我试图重新创建它们,但是mysql一直告诉我,直

  • 我有4个实体列在下面的职位。客户端和产品已在数据库中。问题在于订单和订单产品。我创建Orders对象,然后添加客户机(已经在数据库中)和OrdersProducts的ArrayList,但出现了错误: 当我不添加客户机时,数据库中只有OrderProducts的ArrayList,但OrderProducts没有外键。怎么了?我使用Mysql服务器和hibernate。

  • 我正在使用多个数据库(在同一个postgresql数据库中使用不同的模式)处理Django1.9和python 3.3项目。当我第一次尝试迁移项目时,我得到了这个错误 当表未迁移时,此错误似乎会在其他项目中出现。在我的例子中,在迁移需要的应用程序之前,用开始迁移并不能解决问题。 迁移过程是否在与我的应用程序数据库相同的数据库中查找表?是绝对不同的东西吗?