是否可以在DJango模板中对一组相关项进行排序?
即:此代码(为清晰起见,省略了HTML标记):
{% for event in eventsCollection %}
{{ event.location }}
{% for attendee in event.attendee_set.all %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
显示几乎完全是我想要的.我唯一想要改变的是我按照姓氏排序的与会者名单.我试过说这样的话:
{% for event in events %}
{{ event.location }}
{% for attendee in event.attendee_set.order_by__last_name %}
{{ attendee.first_name }} {{ attendee.last_name }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
唉,上面的语法不起作用(它产生一个空列表),我也没有想过任何其他变化(报告了很多语法错误,但没有快乐).
当然,我可以在我的视图中生成某种排序的与会者列表,但这是一个丑陋而脆弱的(我提到丑陋)解决方案.
毋庸置疑,但无论如何我会说,我已经仔细阅读了在线文档并搜索了Stack Overflow和django-user的档案而没有发现任何有用的东西(啊,如果只有一个查询集是字典,那么dictsort就会这样做工作,但它不是,它没有)
==============================================
在接受Tawmas的回答后,编辑添加了其他想法.
Tawmas完全像我提出的那样解决了这个问题 - 虽然解决方案不是我所期望的.结果,我学到了一种可用于其他情况的有用技术.
汤姆的回答提出了我在我的OP中已经提到的一种方法,暂时被拒绝为"丑陋".
"丑陋"是一种直觉反应,我想澄清它的错误.在这样做时,我意识到这是一个丑陋的方法的原因是因为我对将查询集传递给要呈现的模板的想法感到困惑.如果我放松了这个要求,那么应该采用一种不起眼的方法.
我还没有尝试过这个,但是假设不是传递查询集,而是通过查询集迭代生成事件列表的视图代码,然后使用针对WAS排序(或过滤的)对应参与者的查询集来装饰每个事件.或者其他什么)以期望的方式.像这样的东西:
eventCollection = []
events = Event.object.[filtered and …Run Code Online (Sandbox Code Playgroud) 在我看来,获取这样的url参数:
date=request.GET.get('date','')
Run Code Online (Sandbox Code Playgroud)
在我的网址中,我试图以这种方式使用url模板标记传递参数,如下所示:
<td><a href="{% url 'health:medication-record?date=01/01/2001' action='add' pk=entry.id %}" >Add To Log</a></td>
Run Code Online (Sandbox Code Playgroud)
之后的参数?显然不起作用,我怎样才能传递这个数据值以便用get获取?
我有这个代码(它没有给我预期的结果)
#subject_content.html
{% block main-menu %}
{% include "subject_base.html" %}
{% endblock %}
#subject_base.html
....
....
<div id="homework" class="tab-section">
<h2>Homework</h2>
{% include "subject_file_upload.html" %}
</div>
Run Code Online (Sandbox Code Playgroud)
儿童模板:
#subject_file_upload.html
<form action="." method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
和我的看法
#views.py
@login_required
def subject(request,username, subject):
if request.method == "POST":
form = CarsForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("/")
form = CarsForm()
return render_to_response('subject_content.html', {'form':form}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
上面的代码以我希望的方式创建HTML,但是表单不会更新数据库.
但,
如果我跳过中间模板并直接转到上传表单,它可以正常工作:
#subject_content.html
{% block main-menu %}
{% include "subject_file_upload.html" %}
{% endblock …Run Code Online (Sandbox Code Playgroud) 我需要在django模板中执行过滤查询,以获得一组与视图中的python代码等效的对象:
queryset = Modelclass.objects.filter(somekey=foo)
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我想做
{% for object in data.somekey_set.FILTER %}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到如何写FILTER.
我正在使用Django进行开发,从数据库中检索包含换行符的一些文本.但是,当我使用模板标记将其渲染到模板时,它不会显示换行符.
问题是什么?
我在模板中的代码是这样的:
{% for item in items %}
{{ item.somefield }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
如果item.somefield不是None,我想显示项值,或者显示空字符串.我不想使用{%if item.somefield%}语句,我想要{{item.somefield或''}}之类的东西(我试过这个但是它不起作用)
Django有truncatewords模板标签,它可以在给定的字数下剪切文本.但是没有像truncatechars那样的东西.在给定的字符长度限制下剪切模板中文本的最佳方法是什么?
我已经查看了大量关于django AJAX表单的教程,但是每一个都告诉你一种方法,没有一个是简单的,因为我从未使用过AJAX,所以我有点困惑.
我有一个名为"note"的模型,它的模型形式,在模板内部我需要每次注释元素发送stop()信号(来自jQuery Sortables)django更新对象.
我目前的代码:
views.py
def save_note(request, space_name):
"""
Saves the note content and position within the table.
"""
place = get_object_or_404(Space, url=space_name)
note_form = NoteForm(request.POST or None)
if request.method == "POST" and request.is_ajax:
msg = "The operation has been received correctly."
print request.POST
else:
msg = "GET petitions are not allowed for this view."
return HttpResponse(msg)
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
function saveNote(noteObj) {
/*
saveNote(noteObj) - Saves the notes making an AJAX call to django. This
function is meant to be …Run Code Online (Sandbox Code Playgroud) 我碰巧偶然发现了HAML,这是一种标记内容和编写HTML模板的有趣而美观的方式.
由于我使用Python和Django来满足我的Web开发需求,我想看看是否有可用于替换Django模板引擎的HAML的Python实现(或一些类似的概念 - 不必完全相同).
我有一个带有电子邮件属性的表单.在出现某些验证错误的情况下使用{{form.email}}时,django仍会在输入标记的value属性中呈现前一个值:
<input type="text" id="id_email" maxlength="75" class="required"
value="some@email.com" name="email">
Run Code Online (Sandbox Code Playgroud)
我想自己渲染输入标记(以便在出现错误时添加一些javascript代码和错误类).例如,这是我的模板,而不是{{form.email}}:
<input type="text" autocomplete="on" id="id_email" name="email"
class="email {% if form.email.errors %} error {% endif %}">
Run Code Online (Sandbox Code Playgroud)
但是,这不会向用户显示错误值(在此示例中为"some@email.com").如何在模板中获取字段的值?
django-templates ×10
django ×9
python ×4
html ×2
ajax ×1
haml ×1
include ×1
javascript ×1
jquery ×1
newline ×1
sql-order-by ×1
variables ×1