【问题标题】:Django parsing values of fields in models - Extracting pkDjango解析模型中字段的值 - 提取pk
【发布时间】:2021-09-28 10:10:11
【问题描述】:

我完全迷失了我的 Django 网站的一部分。我终于想出了一种方法,让相同的模型创建一个模板,然后使用该模板创建另一个帖子。这有效并且是理想的。现在我需要将它们放在屏幕上的不同位置,所以我基本上需要两个 for 循环和一种将两者(模板和模板的帖子)相互分开的方法。该模型有一个标题和一个内容字段。创建模板时,标题始终以“Temp:”开头。我完全迷失了这一点,因为我需要解析模型,而不仅仅是使用 HTML 解析器,因为页面上还没有内容,而且需要移动的不仅仅是标题。我需要一种我认为在views.py文件中的方法来获取以“Temp:”开头的所有标题的pk以及与之相关的内容字段,并将其以变量的形式返回给HTML文件。我已经为此工作了 3 天,我真的需要帮助。

views.py

def docpostlistview(request):
    field = DocPost.objects.all()
    return render(request, 'my_app/docpost_list.html', {'field': field})

HTML

<div class="blocks">
<div class="row">

    <div class="col">
        <a href="{% url 'doc-post-create-normal' %}" style="color: white; height: 10px; z-index: -6;">TESTESTESTESTESTESTESTES</a>
    </div>

    {% if user.Doc.all %}
        {% for post in user.Doc.all %}
            <div class="col">
                <div class="card card_template hoverable">
                    <div class="card-image">
                        <a href="{% url 'use_template' pk=post.pk %}" style="color: black">
                            <p>
                                {{ post.content|safe }}
                            </p>
                        </a>
                    </div>
                    <div class="card-content">
                        <p>
                        </p>
                    </div>
                    <div class="card-action">
                        <div class="bottom_text">
                            {{ post.title }}
                            <div class="bottom_button">
                                <form action="{% url 'use_template' pk=post.pk %}" method="POST">
                                    {% csrf_token %}
                                    <div class="card-body">
                                        <a style="background-color: #2f3d50; border-radius: 18px; height: 30px; position: relative; top: 5px;" href="{% url 'use_template' pk=post.pk %}" class="btn btn-primary"><div style="position: relative; top: -3px;">Create</div></a><!--use_template pk=post.pk   -   post-list-->
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="wrapper">
                    <ul>
                        <li><a class="dots_img"> <img src="{% static 'threedots.png' %}" alt=""</a>
                            <ul>
                                <div class="edit_drop">
                                    <form action="{% url 'doc-post-update' pk=post.pk %}" method="POST">
                                        {% csrf_token %}
                                        <div class="card-body">
                                            <a style="background-color: #2f3d50; border-radius: 18px;" href="{% url 'doc-post-update' pk=post.pk %}" class="btn btn-primary">EDIT</a>
                                        </div>
                                    </form>
                                </div>
                                <div class="delete_drop">
                                    <a style="background-color: #2f3d50; border-radius: 18px;" href="{% url 'delete_post' pk=post.pk %}" class="btn btn-danger">Delete</a>
                                    <!--<form action="{% url 'reset' %}" method="POST">{% csrf_token %}
                                        <button type="submit" class="btn btn-danger">Delete</button>
                                    </form>-->
                                </div>
                            </ul>
                        </li>
                    </ul>
                </div>
            </div>
    {% endfor %}
    <hr class="hline">
    {% else %}
        <div class="no_template">
            <p>Your new templates will appear here!</p>
        </div>
        <div class="no_post">
            <p>Your new documents will appear here!</p>
        </div>
        <hr class="hline-non">
    {% endif %}
    <div class="blocks2">
<div class="row">

【问题讨论】:

  • 您能至少分享一下您的模型、视图、html 等的(简化版)代码吗?然后社区会更好地理解它。供您参考,请参阅另一个问题stackoverflow.com/questions/68462364/…
  • 他们对@Neil Godfrey Poncaino 感到抱歉

标签: python html django parsing model


【解决方案1】:

您可能对使用 SQL WHERE 子句的field lookups 感兴趣。

示例:

doc_posts = DocPost.objects.filter(title__startswith="Temp: ")

这里,doc_posts 是一个可迭代的 QuerySet 对象,其中包含一系列 DocPost 对象,其中每个项目的标题都以“Temp:”开头。

如果您只需要idcontent 字段,您可以使用values()

示例:

id_content_seq = DocPost.objects.filter(title__startswith="Temp: ").values("id", "content")

这里,id_content_seq 是一个可迭代的QuerySet 对象,其中包含一系列dict 对象,其中包含idcontent 作为标题以“Temp:”开头的所有项目的键。

【讨论】:

  • 工作得很好,谢谢!如果其他人正在阅读此内容并需要显示来自同一模型的类似内容和其他数据,您首先必须拥有 DocPost.objects.all() 然后 this 然后返回它们以及上下文和上下文名称,例如 docs = DocPost.objects.all () context = {"docs": docs} context['templates'] = DocPost.objects.filter(title__startswith="Temp: ") 然后返回上下文
猜你喜欢
  • 2012-03-02
  • 2016-06-10
  • 2015-07-30
  • 1970-01-01
  • 2020-07-07
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多