Я использую стандартную модель User (django.contrib.auth), которая поставляется с Django. Я сделал несколько своих собственных моделей в приложении Django и создал отношения между ними:
from django.db import models
from django.contrib.auth.models import User
class GroupMembership(models.Model):
user = models.ForeignKey(User, null = True, blank = True, related_name='memberships')
#other irrelevant fields removed from example
Так что теперь я могу сделать это, чтобы получить все текущие членства пользователя:
user.memberships.all()
Однако я хочу сделать более сложный запрос, например:
user.memberships.all().select_related('group__name')
Это отлично работает, но я хочу получить эти данные в шаблоне. Кажется глупым пытаться поместить такую логику в шаблон (и я все равно не могу заставить ее работать), поэтому я хочу создать лучший способ сделать это. Я мог бы подклассифицировать пользователя, но это не кажется хорошим решением - в будущем я могу захотеть переместить свое приложение на другие сайты Django, и, вероятно, если бы существовало какое-либо другое приложение, которое классифицировало бы пользователя как субкласс, я бы не был в состоянии заставить его работать.
Лучше всего создать метод внутри GroupMembership
, называемый чем-то вроде get_by_user(user)
? Смогу ли я позвонить по шаблону?
Буду признателен за любой совет, который кто-либо может дать по структурированию, - извините, если он немного длинный / расплывчатый.