【问题标题】:Django show extra content in class based view with ForeignKey modelsDjango 使用 ForeignKey 模型在基于类的视图中显示额外内容
【发布时间】:2020-01-18 16:23:00
【问题描述】:

我正在尝试将额外内容添加到模板中的 Django 基于类的视图

我有一些这样的模型

class District(models.Model):
    district = models.CharField(max_length=255, null=False, unique=False, blank=True)

    def __str__(self):
        return self.district


class Street(models.Model):
    street_name = models.CharField(max_length=255, null=False, unique=False, blank=True)
    district = models.ForeignKey(District, verbose_name=_('district'), on_delete=models.CASCADE, null=True, blank=True)
    zone = models.IntegerField(blank=True, null=True)

    def __str__(self):
        return self.street_name


class Article(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True, related_name="author", on_delete=models.SET_NULL)
    timestamp = models.DateTimeField(auto_now_add=True)   
    status = models.CharField(max_length=1, choices=STATUS, default=CREATED)
    comment = models.CharField(max_length=255, null=True, unique=False, blank=True)
    name = models.CharField(max_length=255, null=True, unique=False)
    street = models.ForeignKey(Street, verbose_name=_('street'), on_delete=models.CASCADE, null=True, blank=True)


class ArticlesListView(LoginRequiredMixin, PermissionRequiredMixin,ListView):
    model = Article
    paginate_by = 50
    context_object_name = "articles"
    permission_required = 'is_staff'

    def get_context_data(self, *args, **kwargs):
        context = super().get_context_data(*args, **kwargs)
        context['Filter_name'] = Article.objects.order_by().values('name').distinct()
        context['Filter_user'] = Article.objects.order_by().values('user').distinct()
        return context


    def get_queryset(self, **kwargs):
        return Article.objects.all()

在模板的后期

{% for f in Filter_name %}
  <ul>
    <li>{{f.name}}</li>
  </ul>
{% endfor %}

如何使用ForeignKey在模板中显示区名列表和作者名列表?

【问题讨论】:

    标签: django django-template-filters generic-foreign-key


    【解决方案1】:

    你可以试试that

    {% for item in model_1.foreign_model_set.all %}
        <h1>{{ item }}</h1>
    {% endfor %}
    

    【讨论】:

    • 谢谢,但这仅显示加载的 html 中的值,而不是数据库中的所有值
    • 将它们添加到查询集
    • 感谢它的工作。还有一个问题,在现在过滤的结果中,一键将状态更改为全部的最简单方法是什么?
    • 你需要为那个 btn 写一个新的 orm-query。过滤和获取/发布请求是不同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2019-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    相关资源
    最近更新 更多