Django-用户如何查看其会员类型下的图书?

时间:2019-03-25 08:54:03

标签: django django-views django-filter

我为用户设置了成员资格,以便他们可以选择查看特定成员资格类型下的选定图书。在这种情况下,用户如何查看其个人资料页面中其会员类型下的图书列表?

这是我的书籍代码:

class Book(models.Model):
``` some book fields```

    activeReference = models.ManyToManyField(Membership) #here's where membership connects````
    def __str__(self):
       return self.title

    def get_absolute_url(self):
       return reverse('book-detail', kwargs={'slug': self.slug})

以下是会员资格模型:

class Membership(models.Model):
     membership_type = models.CharField(max_length=50)
     price = models.IntegerField(default=100)
     description = models.CharField(max_length=200)

     def __str__(self):
         return self.membership_type

class Customer(models.Model):
      user = models.OneToOneField(User, on_delete=models.CASCADE)
      membership = models.ForeignKey(Membership, on_delete=models.CASCADE, null=True)
      reference = models.CharField(max_length=50, null=True)

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

这是个人资料视图:

def profile(request):
```some update profile post code here```

    context = {

        'u_form': u_form,
        'p_form': p_form
    }

    return render(request, 'users/profile.html', context)

我希望用户能够以其会员类型查看他的所有图书。

3 个答案:

答案 0 :(得分:3)

您可以这样做:

{{ user.customer.membership.book_set.all }}

说明:

在此模板中,如果User实例已登录,则可以通过{{ user }}访问customer实例。然后,您可以访问CustomerModel实例,因为它具有OneToOnemembership的关系。 Membership是FK到book_set的模型。最后,您可以通过reverse relationnpm)访问图书实例。

答案 1 :(得分:1)

{{user.customer.membership.book_set.all}}

答案 2 :(得分:-2)

创建新的模板文件以显示所有书籍,以在视图函数中使用ListView并调用模板文件作为template ='template_name'并导入模板