roc*_*cky -1 django django-models
我是django的新手,我遇到了get_absolute_url()的问题:我的模型:
class Band(models.Model):
B_Name = models.CharField(max_length=30, primary_key=True)
Country = models.CharField(max_length=30)
genre = models.ForeignKey(Genre)
imageband = models.ImageField(upload_to='images/band')
def __unicode__(self):
return self.B_Name
@models.permalink
def get_absolute_url(self):
return '/genre/%s/%s/' % (self.B_Name, self.genre)
Run Code Online (Sandbox Code Playgroud)
我的网址:
url(r'^genre/(\d+)/$', 'genre', name="genre"),
url(r'^genre/(?P<B_Name>)/(?P<genre>\[-\w]+)/$', 'thu'),
Run Code Online (Sandbox Code Playgroud)
我的观点:
def genre(request, url):
template = 'genre/genre.html'
if url=='1':
tmp = Band.objects.raw('SELECT B_Name, Country FROM data_band WHERE genre_id=%s', ...)
if ....
......
return render_to_response(template,{'tmp':tmp})
def thu(request):
template = 'genre/thu.html'
tmp = Band.objects.raw('SELECT B_Name, genre FROM data_band')
return render_to_response(template,{'tmp':tmp})
Run Code Online (Sandbox Code Playgroud)
我的模板genre.html:
{% for x in tmp %}
<tr>
<th><a href="{{x.get_absolute_url}}">{{x.B_Name}}</a></th>
<th>{{x.Country}}</th>
</tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它不起作用.
如果你正在使用Permalink装饰器,你的get_absolute_url方法应该返回一个带有视图名称,args和关键字args的元组:
@models.permalink
def get_absolute_url(self):
return ('genre', (), { # 'genre' here is name of the url: name="genre"
'B_Name': self.B_Name, # substitute: (?P<B_Name>)
'genre': self.genre. # substitute: (?P<genre>\[-\w]+)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
971 次 |
| 最近记录: |