Django. Как я могу получить данные для авторизированного пользователя и вывестb в template?
Имеются модели подписчика и подписки, как вывести данные из модели Subscription (соответственно поля end_date, start_date, subscription_status),через модель UserMembership, для авторизированного пользователя?
Нужны данные {{ subscription.end_date }}, {{ subscription.start_date }} и {{ subscription.subscription_status }}для авторизированного пользователя.
models.py
class Membership(models.Model):
slug = AutoSlugField(populate_from=['membership_type', 'created'])
membership_type = models.CharField(
choices=MEMBERSHIP_CHOICES,
default='Юзер',
max_length=30, verbose_name="Название вида подписки")
price = models.IntegerField(default=15, verbose_name="Стоимость подписки")
created = models.DateTimeField(auto_now_add=True, verbose_name="Время создания")
def __str__(self):
return self.membership_type
class Meta:
verbose_name = "Вид подписки"
verbose_name_plural = "Виды подписок"
ordering = ('created',)
class UserMembership(models.Model):
slug = AutoSlugField(populate_from=['user', 'membership', 'created'])
user = models.OneToOneField(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
membership = models.ForeignKey(
Membership, on_delete=models.SET_NULL, null=True)
created = models.DateTimeField(auto_now_add=True, verbose_name="Время создания")
def __str__(self):
return self.user.username
class Meta:
verbose_name = "Пользователь организации"
verbose_name_plural = "Пользователи организации"
ordering = ('created',)
SUBSCRIPTION_STATUS_CHOICES = (
# ('Ent', 'ent'),
('СПЛАЧЕНА', 'СПЛАЧЕНА'),
('НЕ СПЛАЧЕНА', 'НЕ СПЛАЧЕНА'),
)
delta= timedelta(days=180)
class Subscription(models.Model):
slug = AutoSlugField(populate_from=['user_membership', 'created'])
user_membership = models.ForeignKey(
UserMembership, on_delete=models.CASCADE, verbose_name="Пользователь")
subscription_status = models.CharField(
choices=MEMBERSHIP_CHOICES,
default='НЕ СПЛАЧЕНА',
max_length=30, verbose_name="Название статуса")
start_date = models.DateTimeField(auto_now=False, null=True, verbose_name="Дата начала подписки")
end_date = models.DateTimeField(blank=True, null=True, verbose_name="Дата окончания подписки")
active = models.BooleanField(default=False, verbose_name="Активный")
created = models.DateTimeField(auto_now_add=True, verbose_name="Время создания")
def __str__(self):
return self.user_membership.user.username
class Meta:
verbose_name = "Подписчик"
verbose_name_plural = "Подписчики"
ordering = ('created',)
Ответы (1 шт):
Автор решения: Миша
→ Ссылка
{% if request.user.is_authenticated %}
....
{% endif %}
request.user - хранит данные о текущем пользователе