У меня был веский момент с ORM Джанго (django 1.3). На сервере разработки:
# in x.modules.training.models
class Training(x.models.Base):
trainers = models.ManyToManyField(staff_models.Staff, related_name='trainings_taught')
people = models.ManyToManyField(x.models.Person, related_name='trainings_attended')
# in any view
from x.modules.staff.models import Staff
from x.models import Person
Staff.objects.filter(trainings_taught=12)
# [<Staff: Staff object>]
Person.objects.filter(trainings_attended=12)
# FieldError: Cannot resolve keyword 'trainings_attended' into field. Choices are: address, comment, contact_for_farmers, email, farmer, first_name, id, last_name, mobile_number, modified_by, modified_timestamp, national_id, passport_number, region, version
# Why would it work for one ManyToMany and not the other?
В то время как в универсальной оболочке python (примечание x находится на пути python) независимо от порядка двух строк импорта, оба запроса выполняются просто отлично.
>>> from x.models import *
>>> from x import modules
>>> Person.objects.filter(trainings_attended=12)
>>> modules.staff.models.Staff.objects.filter(trainings_taught=12)
Как это может быть?