2009-09-09 25 views
1

我想設置鏈接到一個視圖,允許編輯對象,在以前的觀點。 型號:Django模型絕對URL - 我在做什麼錯

class List(models.Model): 
user = models.ForeignKey(User) 
name = models.CharField(max_length=200) 
type = models.PositiveIntegerField(choices=TYPE_DICT) 

def __unicode__(self): 
    return self.name 

@models.permalink 
def get_absolute_url(self): 
    return ('EditList', None, {'list_id':self.id}) 

查看:

lists = List.objects.filter(user=request.user) 
    array = [] 
    for list in lists: 
    ListDict = {'Name':list.name, 'type':types[str(list.type)], 'edit':list } 
    array.append(ListDict) 
    context = { 'array':array,} 

模板:

{% for dict in array %} 
     <tr> 
     {% for key,value in dict.items %} 
      {% ifequal key 'edit' %} 
       <td>{{ key }}</td><td><a href="{{ value.get_absolute_url }}">{{ value.name }}</a></td> 
      {% else %} 
       <td>{{ key }}:&nbsp;</td><td>{{ value }}</td> 
      {% endifequal %} 
     {% endfor %} 
     </tr> 
    {% endfor %} 

和URL的conf:

urlpatterns = patterns('tst.list.views', 
(r'^$', 'list'), 
(r'^edit/(?P<list_id>\d+)/$', 'EditList') 

有什麼聯繫此行給了我是http://localhost/list/的網址,而不是http://localhost/list/edit/[objectid]/

誰能告訴我什麼我做錯了什麼?

Alan

+0

模板中的「dict」是什麼?你在上下文中傳遞一個名爲'array'的列表,但是我看不到任何名爲'dict'的東西。 – 2009-09-09 10:42:29

+0

對不起。看來我遺漏了一些代碼。字典是數組的一部分,放在一起查看 - ListDict – 2009-09-09 11:14:43

+0

和值是列表對象 – 2009-09-09 11:15:34

回答

4

如果想這樣做對一位不願透露姓名的URLconf,你只是爲了打發整個進口字符串需要:

@models.permalink 
def get_absolute_url(self): 
    return ('yourproject.yourapp.views.EditList', None, {'list_id':self.id}) 

我也建議你遵循功能PEP8命名約定。

+0

謝謝。通過提到pep8,你建議它應該是edit_list而不是EditList? – 2009-09-10 07:44:47

+0

是的,需要一個好的標準編碼是我的一個祕密:)。那些突出的:ListDict - > list_dict,在你的字典和元組中有一致的標準間隔,4個間隔(或標籤)縮進。 – SmileyChris 2009-09-12 09:07:30

0

好的。我得到了它的工作。我需要做的是給這個觀點。當我改變我的urlconf爲:

url(r'^edit/(?P<list_id>\d+)/$', 'EditList', name = 'EditList'), 

然後一切開始工作。