2011-06-02 47 views
1

我有一個多對多的字段模型,我需要從多到多的字段中選擇一個ID。我用裝飾者permaling裝飾了get_absolute_url方法。它不起作用。所以我明白我需要扭轉關係,從痕跡中可以看出,但我不明白我該怎麼做?如何對get_absolute_url進行反轉以獲得多個字段?

型號:

class MenuItems(models.Model): 
    reference_value = models.CharField(max_length=255) 
    filter_ids = models.ManyToManyField(Filter, blank = True) 

    def __unicode__(self): 
     return u'%s' % self.reference_value 

    @models.permalink 
    def get_absolute_url(self): 
     return ('homepage_ids', None, {'ids': self.filter_ids }) 

我試着用相反的()做的,但我有方法的行爲並沒有改變。

@models.permalink 
    def get_absolute_url(self): 
     return reverse('homepage_ids', kwargs={'ids': self.filter_ids }) 
+0

如果兩個菜單項具有相同的filter_id集,會發生什麼情況? – DrTyrsa 2011-06-02 09:10:14

+0

它會有相同的網址,我想是的。 – I159 2011-06-02 09:16:03

+0

兩個(或多個)對象將具有相同的URL?他們中哪些人會向用戶展示? – DrTyrsa 2011-06-02 09:17:38

回答

1

沒有看到url模式。

self.filter_ids不會返回ID列表,類似。

self.filter_ids.all().values_list('id', flat=True)

將返回[1,2,3]

0

你不發表您的url,但這樣的事情,應該工作

網址

url(r'^/something/(?P<var>\d+)/$', view_name, name="homepage_ids"), 

車型

@permalink 
def get_absolute_url(self): 
    return ('homepage_ids', [str(self.filter_ids)]) 

模板

<a href="{{ ids.get_absolute_url }}"> {{ ids }}</a> 

看看到django tutorial

0

我就是這麼做的: 網址

url(r'^(?P<ids>\d(&\d)*)?/?$', 'homepage', name='homepage'), 

車型

class MenuItems(models.Model): 
"""Menu items... What???""" 
reference_value = models.CharField(max_length=255) 
filter_ids = models.ManyToManyField(Filter, blank = True, related_name="filter_ids") 

def __unicode__(self): 
    return u'%s' % self.reference_value 

def get_absolute_url(self): 
    int_ids = list(self.filter_ids.all().values_list('id', flat=True)) 
    str_ids = "&".join([str(val) for val in int_ids]) 
    return reverse('homepage', kwargs = {'ids': str_ids, }) 

我殺@永久鏈接,因爲管道rmalink decorator是不可用的,通過幾個步驟將我的ID轉換爲字符串並應用反轉函數。同一個網頁的問題仍然存在,但它對我的應用程序並不重要,因爲它永遠不會。

相關問題