что я делаю не так в данный момент, чтобы подтвердить свой класс урока? - PullRequest
0 голосов
/ 07 мая 2020

Я хочу проверить, принадлежит ли мой материал урока пользователю xyz с правом pro, он будет показывать правильный conent, но если нет, он будет отображаться как член, но, тем не менее, я получаю, если я изменяю членство id на pro или vice наоборот, всегда true утверждение

def get(self, request):
    template = loader.get_template(self.template_name)
    template_member = loader.get_template(self.template_payment)
    #rendering the template in HttpResponse
    lesson = Lesson.objects.first()
    user_membership = UserMembership.objects.filter(user=self.request.user).first()
    user_membership_type = user_membership.membership.membership_type
    lesson_allowed_mem_types = lesson.allowed_memberships.all()
    if lesson_allowed_mem_types.filter(membership_type=user_membership_type).exists():
        return HttpResponse(template.render())
    else:
        return HttpResponse(template_member.render())

модели

class Lesson(models.Model):
  allowed_memberships = models.ManyToManyField(Membership)

class Membership(models.Model):
    membership_type = models.CharField(
        choices=MEMBERSHIP_CHOICES,
        default='Free',
        max_length=30)

    def __str__(self):
        return self.membership_type

class UserMembership(models.Model):
  user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
  membership = models.ForeignKey(Membership, on_delete=models.SET_NULL, null=True)

  def __str__(self):
    return self.user.email

1 Ответ

0 голосов
/ 07 мая 2020

Разве вы не пытаетесь просто узнать, есть ли у пользователя членство?

if UserMembership.objects.filter(
        user=request.user,
        membership__membership_type="PAID MEMBER",
    ).exists():
    # user is member
    return HttpResponse(template.render())
else:
    # user is not a member
    return HttpResponse(template_member.render())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...