我的头衔可能不太清楚。 我现在面临的问题是:
我的视图将任意关键字参数传递给另一个view
。
此视图处理哪些信息(它获取的关键字参数)
这是我正在实施的search
功能的示例。
每个用户都有一个Saved Searches
列表。当他们点击Search list
中的任何一个项目时,他们将被定向到处理其收到的信息的不同视图
在Searches model
中,我定义了一个get_absolute_url方法,该方法构造了每个搜索的URL模式(基于字段中的模型)。
my model:
class Searches(models.Model):
SELLER_CHOICES=(('OWNER','owner'),
('DEALER','dealer'),
('BOTH','both'), )
#search_id = models.IntegerField(primary_key=True)
user = models.ForeignKey(User)
make = models.CharField(max_length=100, blank=True)
model = models.CharField(max_length=100, blank=True)
keywords = models.CharField(max_length=100, blank=True)
max_price = models.IntegerField(blank=True, null=True)
min_price = models.IntegerField(blank=True, null=True)
max_year = models.IntegerField(blank=True, null=True)
min_year = models.IntegerField(blank=True, null=True)
pic_only = models.NullBooleanField()
search_title_only = models.NullBooleanField()
owner_dealer_all = models.CharField(max_length=10,choices=SELLER_CHOICES,verbose_name='owner/dealer')
class Meta:
#managed = False
db_table = 'Searches'
verbose_name_plural = "Searches"
def __unicode__(self):
return "%s %s %s-%s" %(self.make,self.model,self.max_year,self.min_year)
def get_absolute_url(self):
return reverse('postings.views.detail',args=[model_to_dict(self.object)])
view:
class SearchListView(ListView):
model=Searches
template:
{% extends "base.html" %}
{% block content %}
{% for obj in object_list %}
<p><a href="{{ obj.get_absolute_url }}">{{ obj }}</a></p>
{% endfor %}
{% endblock %}
您可以从图片中看到,当我点击your searches
时,我收到错误;
Reverse for 'postings.views.detail' with arguments '({'owner_dealer_all': u'DEALER', 'pic_only': True, 'make': u'toyota', u'id': 3, 'min_year': 1990, 'min_price': 4000, 'user': 1, 'keywords': u'hybrid', 'search_title_only': True, 'model': u'prius', 'max_price': 20000, 'max_year': 2012},)' and keyword arguments '{}' not found. 0 pattern(s) tried: []
基本上,我不知道如何在URL模式中处理这个问题。
OR 如果这是一个不好的设计,请请建议一个解决方案
答案 0 :(得分:0)
如果您确实需要在URL中包含所有变量,那么您需要将变量作为GET查询的参数传递,因此您的URL将如下所示:
http://example.com/search?owner_dealer_all=DEALER&pic_only=True&make=toyota&id=3&min_year=1990&min_price=4000&user=1&keywords=hybrid&search_title_only=True&model=prius&max_price=20000&max_year=2012
但是,我强烈建议您将该URL与Search.get_absolute_url
结果分开,因为后者应该指向实际模型。所以让该函数返回类似:
http://example.com/search/23465
其中number是Search
模型实例的ID。在该视图中,获取所有已保存的详细信息并对其进行搜索。如果您实际上不需要URL中的数据,只需选择后一版本。