处理从数据库传递到模板的数据(Django)

Manipulating data passing from database to template (Django)

我对 Django 还是很陌生,所以我真的希望我能解释一下我需要做什么。

我有一个表单,用户可以在其中输入有关角色的信息,然后将其存储在数据库中并在页面上为他们显示。

我知道使用模板变量调用(即 {{character.gender}})很容易调用和显示这些数据,但是,我正在尝试使用输入的数据根据​​数据创建其他变量在进入模板之前。

我以前在 visual basic 中做过这个,本质上是使用 if 语句创建一个新变量来存储信息,然后再传回它,但我不知道如何用 django/python.

例如,如果用户提供了以下信息:

Name = "Jill"
Age = 23
Gender = "Female"

我希望能够做类似的事情:

if gender = "female":
    gender_identifier = 'she'

if age < 30:
    youth = "is still very young"

然后可以在模板中执行类似的操作:

{{character.name}} is {{character.age}} years old and {{gender_identifier}} {{youth}}!

输出"Jill is 23 years old and she is still very young!"

我苦恼的是那些 if 语句需要去哪里以及如何在模板中调用它们。

我已经尝试将它们添加到角色模型中,创建它自己的模型,将其放入 models.py,并创建一个不同的 .py,但无法让它工作。

此外,我知道可以通过 if/then 模板标签来完成,但我真的想尽可能避免这种情况。但是,如果这是解决方案,我可以接受。

感谢您提供的所有帮助,感谢您在我摸索着尝试解释时通读整个问题!

这可以使用 Python 的 property decorator 来实现。

class Character(models.Model):
   #All the fields declarations 
   .
   .
   .
   @property
   def gender_identifier(self):
       if self.gender == "Female":
           return "she"
   @property
   def youth(self):
       if age < 30:
           return "is still very young"

property 的作用是允许您将函数作为对象属性来调用。因此,每当您访问 Character.gender_identifier 将调用方法 gender_identifier 并返回值。

现在在您的模板中,您只需执行 {{Character.gender_identifier}}