Mysql Django ORM在SQL联接中创建幻象别名
我正在执行以下代码(更改名称以保护无辜者,因此模型结构可能看起来很奇怪): 在这一点上导致:Mysql Django ORM在SQL联接中创建幻象别名,mysql,django,join,django-orm,mysql-error-1054,Mysql,Django,Join,Django Orm,Mysql Error 1054,我正在执行以下代码(更改名称以保护无辜者,因此模型结构可能看起来很奇怪): 在这一点上导致: OperationalError at / (1054, "Unknown column 'U1.id' in 'on clause'") 生成的SQL是: SELECT COUNT(*) FROM `membership` WHERE ( `membership`.`group_id` = 2 AND `membership`.`level` > 0.0
OperationalError at /
(1054, "Unknown column 'U1.id' in 'on clause'")
生成的SQL是:
SELECT
COUNT(*)
FROM
`membership`
WHERE (
`membership`.`group_id` = 2 AND
`membership`.`level` > 0.0 AND
NOT (
`membership`.`member_id`
IN (
SELECT
U2.`member_id`
FROM
`membership` U0 INNER JOIN `officers` U2
ON (U1.`id` = U2.`member_id`)
WHERE U2.`profile_id` = 2
)
)
)
SQL Join的ON语句似乎引用了一个尚未定义的别名。知道为什么吗!?我删除了MySQL数据库,并重新同步了模型中的表,以确保没有任何不一致之处
我使用的模型的结构是:
class Membership(models.Model):
member = models.ForeignKey(Member, related_name='memberships')
group = models.ForeignKey(Group, related_name='memberships')
level = models.FloatField(default=0.0)
class Member(models.Model):
name = models.CharField(max_length=32)
class Officer(models.Model):
member = models.ForeignKey(Member, related_name='officerships')
profile = models.ForeignKey(UserProfile)
class UserProfile(models.Model)
group = models.ForeignKey(Group)
class Group(models.Model)
pass
我认为这可能是以下症状之一: 我想,在django版本9589的时候已经修复了。现在如何找出我的修订版本
确认。当我实施上述票据中引用的变更时:
我的错误消失了。我的django orm不是很好,所以我不太了解正在发生的一切,但错误看起来与在“是的,你是对的”中遇到的错误非常相似。当我在这个关闭的记录单底部链接的修订中实现更改时,ORM现在可以正常工作。要查找您的修订,请进入./manage.py shell并执行:>>>导入django>>>>django.get_version()u'1.0-final-SVN-11012'当我使用
get_version
函数时,我没有获得修订号,只有'1.0-final'…该死。
class Membership(models.Model):
member = models.ForeignKey(Member, related_name='memberships')
group = models.ForeignKey(Group, related_name='memberships')
level = models.FloatField(default=0.0)
class Member(models.Model):
name = models.CharField(max_length=32)
class Officer(models.Model):
member = models.ForeignKey(Member, related_name='officerships')
profile = models.ForeignKey(UserProfile)
class UserProfile(models.Model)
group = models.ForeignKey(Group)
class Group(models.Model)
pass