Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Django ORM在SQL联接中创建幻象别名_Mysql_Django_Join_Django Orm_Mysql Error 1054 - Fatal编程技术网

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