[英]Django: Returning models.CharField() value from getter method is empty
這是我的模特課。 在這里我添加了一個新的getter方法url()
來返回作者配置文件的url字符串。 但是當我在html模板文件中調用此方法時,這顯示為空。
看這里是我的用法示例:
作者模型類:
from django.db import models
import re
class Author(models.Model):
salutation = models.CharField(max_length=10)
name = models.CharField(max_length=64)
email = models.EmailField()
headshot = models.ImageField(upload_to='author_headshots')
# On Python 3: def __str__(self):
def __unicode__(self):
return self.name
@property
def url(self):
return re.sub(r"[\s|\.|\-|\_|\'|\+]+", "-", self.name)
從視圖方法將Author
對象上下文傳遞給模板:
from django.shortcuts import render
from author.models import Author
def index(request):
authors = Author.objects.order_by('-name')
return render(request, 'home.html', {
'authors': authors
})
並在模板(home.html)中使用如下:
{% if authors %}
{% for author in authors %}
<h2><a href="author/{{ author.url }}/">{{ author.name }}</a></h2>
<p>About author {{ author.name }} here</p>
{% endfor %}
{% else %}
No Authors
{% endif %}
獲得輸出:
<h2><a href="author//">XXX</a></h2>
<p>About author XXX here</p>
...
期待:
<h2><a href="author/xxx/">XXX</a></h2>
<p>About author XXX here</p>
...
我想我有事。 而不是定義模型的屬性定義像這樣的全局函數(在您的視圖文件中):
def url(Author):
try:
Author.url=re.sub(r"[\s|\.|\-|\_|\'|\+]+", "-", Author.name)
except:
Author.url='Error!'
然后在索引視圖中添加以下內容:
for author in authors:
url(author)
#print author.url
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.