URL 和视图中的 DJango 过滤字段

Filtering field in DJango in the URL and in the view

假设我有一个包含 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')

该页面的 link 将是:

<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 中)?提前致谢。

嗯,最简单 的事情就是使用 DetailView

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 位也是如此。你能解释一下你的项目/需要更多吗?