【问题标题】:How to Pull info from another model within a DetailsView template (without ForeignKey)?如何从 DetailsView 模板中的另一个模型中提取信息(没有 ForeignKey)?
【发布时间】:2018-07-24 04:51:26
【问题描述】:

我正在尝试从 DetailsView 模板(在 Django 中)中的两个模型中提取数据。当然有一个与视图相关联的主要模型(例如文章),它很容易访问。但是,我想从模型中访问数据(例如条款)。我不想使用 ForeignKey,因为我将在每个“文章”中使用许多“术语”,并且由于 ForeignKey 将允许我仅链接到术语模型中的行,我将不得不设置多个 ForeignKey 字段,这很快就会变得一团糟。

我在想这可以使用 get_context_data 或 templatetags 来完成,但还没有运气。有什么想法吗?

【问题讨论】:

    标签: django django-models django-templates django-views


    【解决方案1】:

    Django Documentation,您可以添加您喜欢在模板上下文中调用的任何查询集或上下文值,例如下面的book_list 将列出所有书籍,并且不必与任何其他模型链接..

    #views.py
    class PublisherDetail(DetailView):
    
        model = Publisher
    
        def get_context_data(self, **kwargs):
            # Call the base implementation first to get a context
            context = super(PublisherDetail, self).get_context_data(**kwargs)
            # Add in a QuerySet of all the books
            context['book_list'] = Book.objects.all()
            return context
    
    #yourtemplate.html
    {% for book in book_list %}
        {% if book %}
            {{ book.title }}
        {% endif %}
        {% empty %}
           No book_list found.
    {% endfor %}
    

    【讨论】:

    • 谢谢,@misraX。这将帮助我从 Book 模型中获取所有值。如何从模板中传递特定书籍的参数?比如说,我会在一篇文章中访问 book1,在另一篇文章中访问 book2 和 book3。也许我可以在模板中使用 if __exact 命令?不确定...即使可行,每次都需要查询模型中的所有记录才能访问单个记录。你怎么看?
    猜你喜欢
    • 2019-06-15
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    相关资源
    最近更新 更多