我是Django和Python的新手(甚至是编程新手),现在正在创建我的第一个应用程序。我有一个包含外键的模型,这是一个多对一的关系(一行可以容纳很多文章,但每篇文章只涉及一行)。在我的模板中,我想连接一些值来为图像源创建一个URL。
models.py中的相关信息:
class Article(models.Model):
line = models.ForeignKey(Line, null=True)
article = models.CharField(max_length=128)
slug = models.SlugField(null=True)
class Line(models.Model):
line = models.CharField(max_length=128, unique=True)
相关视图会将Article.objects.get(slug=article_slug)
article
中的context_dict
发送到模板。在我的模板中,我包含以下内容并正确返回预期值:{{ article.article }}
和{{ article.line }}
。如果我连接article.article
的值,则返回预期值:
{% with article.article as a %}
此处{{ a }}
显示了article.article的值。但是,当我尝试连接article.line
的值时,我没有任何价值。
{% with article.line as l %}
{{ l }}
不会返回任何内容。我假设这是因为外键也可以解释为一对多,所以我试图指定哪个值(我也使用了article.line.all.0
等变体。)
{% with article.line_set|first as l %}
此处{{ l }}
也不会返回任何内容。
为什么我可以在模板中将article.line
的值作为文本返回,但是我不能将它包含在串联中?
答案 0 :(得分:1)
article.line_set
不是打印相关Line
个对象的正确方法,因为它们之间没有这样的关系。
至于问题,很有可能
article.line
是None
,我认为当尝试访问Models.DoesNotExist
实例的.line
属性时,Django模板引擎会静默地抑制可能的article.line
异常。< / p>
确保article.line
不是None
,以便您可以按如下方式打印出来的文字表示:
{% with article.line.line as l %}