Django模型绝对网址 - 我做错了什么

时间:2009-09-09 10:16:40

标签: django

我正在尝试在以前的视图中设置允许编辑对象的视图的链接。 型号:

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 %}

和网址:

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

这条链接给我的内容是http://localhost/list/为网址,而不是http://localhost/list/edit/[objectid]/

有谁能告诉我我做错了什么?

艾伦

2 个答案:

答案 0 :(得分:4)

如果 希望为未命名的urlconf执行此操作,则只需传递整个导入字符串:

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

我还建议您遵循函数的PEP8命名约定。

答案 1 :(得分:0)

确定。我搞定了。我需要做的是为这个观点命名。当我将我的urlconf更改为:

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

然后一切都开始了。