2014-03-27 40 views
1

我的标题可能不是很清楚。 我现在面临的问题是:如何让URL模式在Django中接受变量参数?

我的视图将任意关键字参数传递给另一个view。 这个视图处理什么信息(关键字参数)

这是我正在实施的search功能的示例。 每个用户将有一个Saved Searches的列表。当他们在Search list点击项中任一项,它们将被引导至处理它接收

Searches model的信息不同的看法,我已经定义了构造,每个这些搜索的URL图案的get_absolute_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模式。

或 如果这是一个不好的设计,请请提出一个解决方案 enter image description here

+0

请让我知道,如果有什么不清楚,以便我可以详细说明。谢谢 –

回答

0

如果你真的需要在URL中的所有变量,那么你需要通过变量PARAMS一个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 

,其中数字是您Search模型实例的ID。在该视图中,获取所有保存的细节并对其进行搜索。如果您实际上不需要网址中的数据,只需选择后一个版本即可。

相关问题