문제

다음 코드를 실행 중입니다 (이름이 무고한 것을 보호하기 위해 변경되어 모델 구조가 이상하게 보일 수 있습니다).

memberships = 
    models.Membership.objects.filter(
        degree__gt=0.0,
        group=request.user.get_profile().group
    )

exclude_count =  
    memberships.filter(
        member__officerships__profile=request.user.get_profile()
    ).count()

if exclude_officers_with_profile:
    memberships = memberships.exclude(
        member__officerships__profile=request.user.get_profile()
    )

total_count = memberships.count()

이 시점에서 다음과 같은 결과가 발생합니다.

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 's 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
도움이 되었습니까?

해결책

나는 이것이 다음의 증상 일 수 있다고 생각한다.

http://code.djangoproject.com/ticket/9188

Django Revision 9589에서 고정 된 것 같습니다. 이제 내가 일하는 어떤 개정판을 파악하는 방법 ...


확인. 위의 티켓에서 참조 된 변경 사항을 구현했을 때 :

http://code.djangoproject.com/changeset/9589

내 오류가 사라졌습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top