gpt4 book ai didi

没有外键的 Django JOIN 查询

转载 作者:行者123 更新时间:2023-12-01 21:20:02 25 4
gpt4 key购买 nike

Django 中有没有一种方法可以使用 ORM(而不是原始 SQL)编写查询,从而允许您在没有外键的情况下 JOIN 另一个表?查看文档,为了使一对一关系正常工作,必须存在外键?

在下面的模型中,我想通过 UserActivity.request_url 上的 JOIN 到 UserActivityLink.url 来运行查询。

class UserActivity(models.Model):
id = models.IntegerField(primary_key=True)
last_activity_ip = models.CharField(max_length=45L, blank=True)
last_activity_browser = models.CharField(max_length=255L, blank=True)
last_activity_date = models.DateTimeField(auto_now_add=True)
request_url = models.CharField(max_length=255L, blank=True)
session_id = models.CharField(max_length=255L)
users_id = models.IntegerField()
class Meta:
db_table = 'user_activity'

class UserActivityLink(models.Model):
id = models.IntegerField(primary_key=True)
url = models.CharField(max_length=255L, blank=True)
url_description = models.CharField(max_length=255L, blank=True)
type = models.CharField(max_length=45L, blank=True)
class Meta:
db_table = 'user_activity_link'

链接表对系统中给定的 URL 进行了更具描述性的翻译,这是系统生成的某些报告所必需的。

我尝试创建从 UserActivity.request_url 到 UserActivityLink.url 的外键,但失败并出现以下错误:错误 1452:无法添加或更新子行:外键约束失败

最佳答案

不,不幸的是没有有效的方法。

.raw() 就是为了这个事情而存在的。即使可以,它也可能会比原始 SQL 慢很多。

有一篇博文here详细说明如何使用 query.join() 执行此操作,但正如他们自己指出的那样。这不是最佳实践。

关于没有外键的 Django JOIN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com