Не удается преобразовать ключевое слово 'mem_ev' в поле в Django

У меня есть небольшой Django проект, который состоит из 2 моделей (Event, mem_ev) плюс auth User и Profile, чтобы пользователи --< mem_ev >-- События (т.е. классические отношения "многие ко многим" между пользователями и событиями).

Я хочу иметь возможность перечислять все события для участника и всех участников для события, оба из которых влекут за собой объединение между основным набором данных и mem_ev.

У меня есть список мероприятий, посещенных участником, который работает нормально (list_member_events), но не удается получить список участников, посещающих мероприятие (list_event_members).

Мой models.py это:

from django.db import models
from django.utils.text import slugify
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE) # Delete profile when user is deleted
    event_count = models.IntegerField(default=0)

    def __str__(self):
        return f'{self.user.username} Profile' #show how we want it to be displayed

class Event(models.Model):
    title = models.CharField(max_length=50)
    slug = models.SlugField(max_length=50,default="", null=False)
    description = models.TextField()
    cost = models.DecimalField(max_digits = 5, decimal_places = 2, default = 0.0)
    event_date = models.DateTimeField(null=True,blank=True)
    attendees = models.IntegerField(default=0)

    class Meta:
        ordering = ['event_date']

    def save(self, *args, **kwargs):
        self.slug = slugify(self.title)
        super(Event, self).save(*args, **kwargs)

    class Meta:
        ordering = ['event_date']

    def __str__(self):
        return self.title

class mem_ev(models.Model):
    member_id = models.ForeignKey("Profile",on_delete=models.CASCADE)
    event_id = models.ForeignKey("Event",on_delete=models.CASCADE)
    amt_paid = models.DecimalField(max_digits = 5, decimal_places = 2, default = 0.0)
    date_paid = models.DateTimeField(null=True,blank=True)

Мой views.py это:

from django.shortcuts import render, redirect
from django.contrib import messages
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.contrib.auth import authenticate, login
from .models import Event, mem_ev, Profile
from .forms import UserRegistrationForm
from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model

...

def list_event_members(request,id):
    User = get_user_model()
    event_members = User.objects.filter(mem_ev__event_id=id)
    return render(request,'wf/list_event_members.html',{'event_members':event_members})

@login_required
def list_member_events(request,id,username):
    member_events = Event.objects.filter(mem_ev__member_id=id)
    user = User.objects.get(username=username)
    return render(request,'wf/list_member_events.html',{'member_events':member_events,'member':user})

Я получаю в ответ следующую ошибку:

FieldError at /list_event_members/8/

Cannot resolve keyword 'mem_ev' into field. Choices are: date_joined, email, first_name, groups, id, is_active, is_staff, is_superuser, last_login, last_name, logentry, password, profile, user_permissions, username

/home/dconran/django/mysite/wf/views.py, line 33, in list_event_members

        event_members = User.objects.filter(mem_ev__event_id=id)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 

Очевидно, что ему не нравится бит фильтра mem_ev, но почему, если он вполне доволен этим для list_member_events?

И как мне это исправить?

Вы работаете с profile, а не с User, поэтому:

event_members = User.objects.filter(profile__mem_ev__event_id=id)
Вернуться на верх