سؤال

وأنا تنفيذ التعليمات البرمجية التالية (تغيرت الأسماء لحماية الأبرياء، وبالتالي فإن هيكل نموذج قد تبدو غريبة):

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 تاريخ على بيان يتم الرجوع اسم مستعار التي لم يتم تحديدها. أي أفكار لماذا !؟ لقد تركت بلدي قاعدة بيانات 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

والذي كان قد حدد اعتبارا من جانغو مراجعة 9589، على ما أعتقد. الآن كيفية معرفة أي مراجعة أعمل من ...


ومؤكد. عندما تنفذ التغيير المشار إليه في التذكرة أعلاه:

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

وذهب خطأ بلدي بعيدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top