我正在尝试在以前的视图中设置允许编辑对象的视图的链接。 型号:
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 }}: </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]/
有谁能告诉我我做错了什么?
艾伦
答案 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'),
然后一切都开始了。