簡體   English   中英

在Django模板中使用外鍵作為變量

[英]Use foreign key as variable in Django template

我是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)作為context_dict中的article發送到模板。 在我的模板中,我包括以下內容並正確返回期望值: {{ 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的值作為文本返回到模板中,但不能將其包含在串聯中?

article.line_set不是打印相關Line對象的正確方法,因為它們之間沒有這種關系。

至於問題,很有可能article.lineNone並且我認為Django模板引擎在嘗試訪問null的article.line實例的.line屬性時會默默地抑制可能的Models.DoesNotExist異常。

確保article.line不為None以便可以按如下所示打印出它的文本表示形式:

{% with article.line.line as l %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM