如何在 Django 上的一个 ListView Class 中使用多个模型
How to use multiple models in one ListView Class on Django
我想创建 pege,它可以使用 Django 预览 auhors 个人资料和帖子。
我创建了 UserPostListView Class,然后我想按作者姓名搜索个人资料模型并获取个人资料。
我该怎么做?
models.py
class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg',upload_to='profile_pics')
def __str__(self):
return f'{self.user.username} Profile'
def save(self):
super().save()
img = Image.open(self.image.path)
output_size = (300,300)
img.thumbnail(output_size)
img.save(self.image.path)
views.py(UserPostListView Class)
class UserPostListView(ListView):
model = Post
template_name = 'blog/user_posts.html'
context_object_name = 'posts'
paginate_by = 5
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return Post.objects.filter(author=user).order_by('-date_posted')
def get_context_data(self, **kwargs):
context = super(UserPostListView, self).get_context_data(**kwargs)
context['profiles'] = Profile.objects.all()
return context
据我了解,您想要 post 中 post 的作者个人资料 queryset 是单个用户,因此您的 get_context_data
您可以获得每个 post 的作者。
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["profile"] = Profile.objects.filter(user__username=self.kwargs.get("username"))
return context
我想创建 pege,它可以使用 Django 预览 auhors 个人资料和帖子。
我创建了 UserPostListView Class,然后我想按作者姓名搜索个人资料模型并获取个人资料。
我该怎么做?
models.py
class Profile(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg',upload_to='profile_pics')
def __str__(self):
return f'{self.user.username} Profile'
def save(self):
super().save()
img = Image.open(self.image.path)
output_size = (300,300)
img.thumbnail(output_size)
img.save(self.image.path)
views.py(UserPostListView Class)
class UserPostListView(ListView):
model = Post
template_name = 'blog/user_posts.html'
context_object_name = 'posts'
paginate_by = 5
def get_queryset(self):
user = get_object_or_404(User, username=self.kwargs.get('username'))
return Post.objects.filter(author=user).order_by('-date_posted')
def get_context_data(self, **kwargs):
context = super(UserPostListView, self).get_context_data(**kwargs)
context['profiles'] = Profile.objects.all()
return context
据我了解,您想要 post 中 post 的作者个人资料 queryset 是单个用户,因此您的 get_context_data
您可以获得每个 post 的作者。
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["profile"] = Profile.objects.filter(user__username=self.kwargs.get("username"))
return context