建立一个独特的收藏在你views.py
文件,你会子集的查询集只得到了不同的值。那么你只会将这些不同的值返回给你的模板。
因此,使用您的示例,您有一个名为results
的上下文对象。你不定义如何来填充该对象,或者你的模型的样子,所以让我们假设你的应用程序的参数的缘故以下模型:
from django.db import models
class MyModel(models.Model):
ip = models.IPAddressField()
现在,让我们来看看views.py
在这里,我们使用的是Generic Class Based Views:
from django.views.generic.list import ListView
class IpListView(ListView):
def get_queryset(self):
queryset = super(IpListView, self).get_queryset()
unique_ips = queryset.values('ip').distinct()
return unique_ips
注:你也可以把distinct()
上述方法直接进入urls.py
下面QuerySet对象...
在你的urls.py
你会确保你路线IpListView
到您的模板。喜欢的东西:
from django.conf.urls import patterns, url
from myapp.models import MyModel
from myapp.views import IpListView
urlpatterns = patterns('',
url(r'^$',
IpListView.as_view(
queryset=MyModel.objects.order_by('ip'),
context_object_name='results',
template_name='myapp/mytemplate.html',
), name='mymodel-ips'
)
)
注意这里怎么results
是你的上下文对象的名字。这意味着,所有的ip
字段值将在你的模板mytemplate.html
为可用:
for r in results:
ip_option = r.ip
而且因为你已经子集查询集只具有独特的IP地址,你得到你所需要的东西。所以你只需要循环:
<p>Choose:
<select>
{% for item in results %}
<option value="{{ item.ip }}">{{ item.ip }}</option>
{% endfor %}
</select>
<button type="button">Filter</button>
</p>
一个告诫在这里:你不明确,如果你需要从你的模型的任何其他领域。如果你这样做,我上面列出的查询集将修改你得到的结果,并且如果你想使用输入的其他值返回,你可能无法得到你想要的结果...
你真的没有提供足够的细节你正在努力做什么才能给出明确的答案。你的模型(和数据库表)对于IP来说是什么样的? – tatlar
对不起,我应该指定。我的模型的名称是无效的,字段为:“访问”(DateTimeField),“IP”(CharField),“登录”(CharField)。 – gjvatsalya
看看Django [模型参考](https://docs.djangoproject.com/en/dev/ref/models/fields/)和我的答案,下面列出了使用哪些字段类型。你至少应该为'ip'字段使用'IPAddressField()'。我编辑了你的帖子来反映这一点。它需要得到主持人的批准才能出现。 – tatlar