Django:返回模型.来自 getter 方法的 CharField() 值为空



这是我的模型类。在此,我添加了一个新的 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
                                         })

并在模板(主页.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

相关内容

最新更新