2

У меня есть модель персонала, который может быть назначен для многих других групп моделиAttributeError: объект «ManyToManyDescriptor» не имеет атрибута «все» - Джанго

Я пыталась дозвониться, чтобы получить ответ о том, что группы делает этот персонал принадлежит но я продолжаю получать ошибки.

Может кто-нибудь, пожалуйста, дайте мне руку? Модель

class Staff(Model): 
    groups = ManyToManyField(Group, 
          related_name="%(class)ss", 
          related_query_name="%(class)s", 
          blank=True) 

class Group(Model): 
    creator = ForeignKey(Employer, 
         on_delete=CASCADE, 
         related_name="%(class)ss", 
         related_query_name="%(class)s") 
    group_name = CharField(max_length=256, unique=True) 
    created_at = DateTimeField(auto_now_add=True) 

Пользователь Я попробовал несколько способов, таких как

staff = Staff.objects.filter(pk=1) groups = staff.group.all() или groups = staff.group_set.all() или groups = staff.group.filter()

и некоторыми другими способами, которые я не могу вспомнить, но я продолжаю получать ошибки.

Заранее спасибо

+1

Это группы. Поэтому make groups = staff.groups.all() – sebb

+0

@sebb Я бы получил ошибку, например, 'AttributeError: объект QuerySet 'не имеет атрибутов' groups'' – Dora

ответ

4

Джанго фильтр() возвращает объект QuerySet, который представляет собой контейнер результатов. Таким образом, перед попыткой доступа к полям вам нужно выбрать конкретный объект результата.

results = Staff.objects.filter(pk=1) 
for staff in results: 
    print staff.groups.all()