gpt4 book ai didi

python - Django:从 getter 方法返回的 models.CharField() 值为空

转载 作者:行者123 更新时间:2023-11-28 19:23:12 25 4
gpt4 key购买 nike

这是我的模型类。在此我添加了一个新的 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 对象上下文从 View 方法传递到模板:

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>
...

最佳答案

我觉得我有东西。不是定义模型的属性,而是定义一个像这样的全局函数(在您的 View 文件中):

def url(Author):
try:
Author.url=re.sub(r"[\s|\.|\-|\_|\'|\+]+", "-", Author.name)
except:
Author.url='Error!'

然后在您的索引 View 中添加:

for author in authors:
url(author)
#print author.url

关于python - Django:从 getter 方法返回的 models.CharField() 值为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com