Я использую стандартную модель пользователя (django.contrib.auth), которая поставляется с Django. Я сделал некоторые из моих собственных моделей в приложении 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')
Это прекрасно работает, но я хочу, чтобы извлечь эти данные в шаблоне. Кажется глупым пытаться поставить такую логику внутри шаблона (и я не могу заставить его работать в любом случае), поэтому я хочу создать лучший способ сделать это. Я мог бы подкласса User, но это не похоже на отличное решение - я могу в будущем захотеть перенести свое приложение на другие сайты Django, и, предположительно, если бы было какое-то другое приложение, которое не было бы подклассифицировано пользователем I способный заставить его работать.
Лучше всего создать метод внутри GroupMembership
, который называется что-то вроде get_by_user(user)
? Смогу ли я назвать это из шаблона?
Я был бы признателен за любые советы, которые могут оказать на структурирование этого - извините, если это немного длинный/неопределенный.
Знаете ли вы, что модель пользователя имеет методы, добавленные к ней определением членства в вашей группе? –
Я не знал, что он добавил методы. Я знал, что это создаст свойство User.memberships, но разве это не все? –