جانغو ORM يخلق فانتوم الاسم المستعار في SQL تاريخ
-
06-07-2019 - |
سؤال
وأنا تنفيذ التعليمات البرمجية التالية (تغيرت الأسماء لحماية الأبرياء، وبالتالي فإن هيكل نموذج قد تبدو غريبة):
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
وذهب خطأ بلدي بعيدا.
لا تنتمي إلى StackOverflow