django - 如何允许指定用户在 django 中查看指定书籍的优质内容
问题描述
我希望有一个人可以帮助我。我是 django 的学生和初学者。我试图允许某个高级用户查看特定书籍的高级内容。我已经有书籍、用户和会员类型的模型。但是,我想知道如何连接这 3 个,以便某个用户只能从书籍列表中看到一本特定书籍的ALLOWED PREMIUM CONTENT 。
这是代码示例:
类书(模型。模型):
code = models.SlugField(unique=True, help_text="Enter BIC Code", null=True)
title = models.CharField(max_length=200)
author = models.ForeignKey('Author', on_delete=models.CASCADE, null=True)
artist = models.ForeignKey('Artist', on_delete=models.CASCADE, null=True)
summary = models.TextField(max_length=1000, help_text="Enter a brief description of the book")
book_type = models.ForeignKey('Type', on_delete=models.SET_NULL, null=True)
isbn = models.CharField('ISBN', max_length=15, help_text='Enter ISBN number')
status = models.CharField(choices=STATUS_CHOICES, default='Ongoing', null=True, max_length=30)
genre = models.ManyToManyField(Genre, help_text="Select a genre for this book")
language = models.CharField(max_length=50, null=True,
help_text="Enter the book's natural language (e.g. English, Tagalog, Japanese etc.)")
released_date = models.CharField(max_length=50, null=True, help_text="Enter the Released Date (e.g. March 2014)")
cover = models.ImageField(upload_to='book_cover', null=True, validators=[img_file_extension],
help_text="Image File Only")
teaser = models.FileField(upload_to='book_preview', validators=[pdf_file_extension], help_text="PDF File Only")
featured = models.BooleanField(null=True, default=False)
timestamp = models.DateTimeField(default=timezone.now)
def display_genre(self):
return ', '.join([genre.name for genre in self.genre.all()[:3]])
display_genre.short_description = 'Genre'
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
def get_absolute_url(self):
return reverse('book-detail', args=[str(self.id)])
def __str__(self):
return self.title
类页面(模型。模型):
book = models.ForeignKey('Book', on_delete=models.CASCADE, null=True)
file = models.FileField(upload_to='book_content', validators=[pdf_file_extension], help_text="PDF File Only")
def __str__(self):
return self.book.title
def get_absolute_url(self):
return reverse('page-detail', kwargs={'id', self.id})
类成员资格(模型。模型):
user = models.OneToOneField(User, on_delete=models.CASCADE)
title = models.ManyToManyField(Book)
premium = models.BooleanField(default=False)
reference = models.CharField(max_length=40, blank=True)
def __str__(self):
return self.user.username
我不知道在views.py之后该怎么做
class PageDetailView(LoginRequiredMixin, generic.View):
def get(self, request, *args, **kwargs):
book = get_object_or_404(Book)
page = get_object_or_404(Page)
membership = get_object_or_404(Membership, user=request.user)
context={'object': None}
if #-----------------------
return render(request, "catalog/page_detail.html", context)
解决方案
推荐阅读
- git - 将 git repo 镜像到新分支
- r - R中的PCA:svd(x,nu = 0,nv = k)中的错误:'x'中的无限或缺失值
- reactjs - Django上的Heroku应用程序错误与反应
- delphi - 如何将指针值转换为字符串
- windows-subsystem-for-linux - 使用 Windows 终端作为默认 WSL 启动器?
- node.js - 带有打字稿的AWS Lambda无法读取异步处理程序中未定义的属性
- c# - C# 如何从 Azure Cosmos 获取数据库列表
- reactjs - 如何检查用户是否提供了有效的 upi id 以在 razorpay 中进行支付
- python - 如何在 Elasticsearch Python 客户端中查询包含撇号的字段
- r - ggplot2:按级别因子重新排序x轴标签不起作用