首页 > 解决方案 > 条件不适用于 Django 模板中的 2 个不同的应用程序

问题描述

我创建了一个包含 2 个应用程序的项目: 1.Core 用于在主页中查看的项目模型 2.使用帖子模型得分

home.html 主要用于列出设计师的项目,设计师/用户也可能有帖子,所以我试图为有帖子的设计师/用户显示按钮,如果用户没有帖子,则隐藏它们。

我已经添加了代码,但设计师/用户帖子的按钮仍然显示。

应用 1 号核心

核心模型.py

class Item(models.Model):
    designer = models.ForeignKey(
        User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)

核心视图.py

class HomeView(ListView):
    model = Item
    paginate_by = 12
    template_name = "home.html"
    ordering = ['-timestamp']
    # context_object_name = 'posts' (I have commented this part as it is from Score Models 
when included the home page become 404 error)

这是核心网址

urlpatterns = [
    path('', HomeView.as_view(), name='home'),

App No.2 Score Score Models.py:

class Post(models.Model):
    designer = models.ForeignKey(User, on_delete=models.CASCADE)
    design = models.ImageField(
        blank=False, null=True, upload_to=upload_design_to)

Home.html 模板

{% if post.designer %}

  <a href="{% url 'score:user-posts' item.designer.username %}"> 
  <button style="margin-top: 10px;text-transform: none;" button type="button" 
class="btn btn-success btn-sm btn-block">
   Check my posts</button>
   </a>

{% else %}

Show Nothing

{% endif %}

我不知道现在工作的原因是什么我已经对其他模板使用了相同的逻辑,但在这次试验中没有成功

标签: django

解决方案


您可以将此解决方案调整为您的项目。

模型.py:

class User(models.Model):
    user = models.CharField(max_length=50)

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


class Item(models.Model):
    designer = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=100)

    def __str__(self):
        return str(self.title)


class Post(models.Model):
    designer = models.ForeignKey(User, on_delete=models.CASCADE)
    design = models.CharField(max_length=15, blank=False, null=True)

    def __str__(self):
        return str(self.design)

视图.py:

def myview(request):
    msg = ''
    qs1 = Item.objects.all().values_list('designer')
    qs2 = Post.objects.all().values_list('designer')
    for result in list(set(qs1) & set(qs2)):
        msg += '<a href = "www.google.com"><button style = "margin-top: 10px;text-transform: none;" type = "button" ' \
               'class ="btn btn-success btn-sm btn-block" > Check my posts : {0}</button></a><br>'.\
            format(User.objects.get(pk=result[0]))
    context = {'msg': msg}
    return render(request, 'stack/home.html', context)

主页.html

<body>
      {% autoescape off %}
      {{ msg }}
      {% endautoescape %}

</body>

推荐阅读