【问题标题】:Automatically assigning model field values in Django在 Django 中自动分配模型字段值
【发布时间】:2011-10-02 09:13:08
【问题描述】:

在定义模型时,有没有办法在 Django 中自动设置模型的字段值?这可以用于存储诸如时间戳之类的东西(例如),也可以用于创建一个字段,该字段被构造为其他字段的某些函数。

换句话说,我正在寻找这样的东西:

类 Foo(models.Model):

spam = models.CharField(max_length=2000)
my_other_field = ###?

def generate_my_other_field():
    #Some algorithm to determine the value of my_other_field

【问题讨论】:

  • 是否要将这些生成的值存储在数据库中?或者只是在查看模型实例时让它们可用?
  • 我想在定义其他字段时生成它们 - 基本上,初始化器在 Python 中的工作方式。可能有一种更简洁的方法可以做到这一点,但这是我能想到的最简单的方法。

标签: django django-models


【解决方案1】:

是的,有办法。来自Django docs

Field.default

默认值 场。这可以是一个值或一个 可调用对象。如果可调用,它将 每次有新对象时调用 已创建。

【讨论】:

  • 谢谢!我没有意识到默认值可以是可调用的函数。
  • 诀窍是确保将函数指定为默认值,而不是结果 - 所以(例如)default=datetime.datetime.now 而不是 default=datetime.datetime.now()
猜你喜欢
  • 2011-06-25
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多