Django将用户详细信息添加到UserPost列表视图

时间:2020-08-23 17:05:51

标签: python django

我有一个UserPost列表视图,它是特定用户帖子的视图。我正在循环显示该特定用户的帖子,但是我想添加该用户的个人资料详细信息(例如个人资料图像)和其他详细信息(例如电子邮件)。

因此,我不确定如何以设计者(而非登录用户)的身份添加用户帖子名称的用户详细信息。

我可以在每个循环发布的帖子中添加用户/设计者详细信息,但是我不希望在每个帖子中都重复它,我只希望它像{{ view.kwargs.username }}一样出现一次,因为此页面仅针对此页面用户/设计师

这是模型。py

class Post(models.Model):
    designer = models.ForeignKey(User, on_delete=models.CASCADE, related_name="post")
    title = models.CharField(max_length=100, unique=True)

这是与每个用户相关的个人资料模型

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField(default='default.jpg', upload_to='profile_pics')

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()
    first_name = forms.CharField()
    last_name = forms.CharField()
    class Meta:
        model = User
        fields = ['username', 'first_name', 'last_name',
                  'email']

这是userpostlist的视图,该视图由特定用户/设计者而非登录用户过滤

class UserPostListView(ListView):
    model = Post
    template_name = "user_posts.html"
    context_object_name = 'posts'
    queryset = Post.objects.filter(admin_approved=True)
    paginate_by = 6

    def get_queryset(self):
        user = get_object_or_404(User, username=self.kwargs.get('username'))
        return Post.objects.filter(designer=user, admin_approved=True).order_by('-date_posted')

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        has_items = Item.objects.filter(designer__username=self.kwargs['username']).exists()
        context['has_items'] = has_items
        return context

这是模板

{% if has_items %}
<h1 class="display-4">Hello, this is {{ view.kwargs.username }} </h1>
<img class="profile_image" src={{ designer.profile.image.url }}> <----------- I want it to appear
{{ designer.email }}<----------- I want it to appear
{% else %}
Show nothing
{% endif %}

{% for post in posts %}
Post details
{% endfor %}

1 个答案:

答案 0 :(得分:1)

您可以将其添加到上下文中:

object SS extends Sub1 with Sub2 {
  override type A >: (String, String) <: Product with Serializable
}