在DJango中如何在URL和视图中筛选字段

3
假设我有一个包含2个字段的模型:
class Bands(models.Model):
    id = models.IntegerField(db_column='ID', primary_key=True)
    name = models.CharField(db_column='NAME')
    type = models.CharField(db_column='TYPE')
    ...

我想做的是用一个模板列出所有字段数据。例如:
{% block content %}

{{ field_name }}
    <ul>
    {% for band in bands %}
        <li>{{ band }}</li>
    {% endfor %}
    </ul>

{% endblock %}

那么,我应该如何制作我的URL?
url(r'^band/$', views.band, name='band')

或者

url(r'^band/(?P<band>\w+)/$', views.band, name='band')

该页面的链接将是:

<a href="{% url 'band' 'name' %}">Name</a>

在我的视图中,我将值设为这样:
def band(request, field):
    results = Results.objects.all()
    names = [n.name for n in results]
    types = [t.type for t in results]

    if field == 'name':
        bands = names
    else:
        bands = types

    return render(request, 'band.html', {'bands': bands, 'field_name': field})

这是在视图和URL中正确的方法吗?谢谢提前。

1个回答

1

嗯,最简单的方法是使用详细视图

from .models import Band

class BandDetailView(DetailView):
    model = Band

urls.py 中大概是这样的:
from band.views import BandDetailView
url(r'^band/(?P<pk>\d+)/?$', BandDetailView.as_view(), name='band-detail')

并在模板中:

{% url 'band-detail' pk=1 %}

说实话,你的模型对我来说没有太多意义,视图中的Led Zeppelin vs. Deep Purple部分也是如此。你能解释一下你的项目/需求吗?

那只是一个示例,让我意识到如何以正确的方式实现它。我会尝试这个方法并稍后告诉你。谢谢。 - rxmxn
@xRa 明白了。如果答案有帮助,请不要忘记投票/接受答案。 - Josh K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接