1

我正在尝试创建一个可调用对象以在创建新实例时返回用于字段的默认值。

该值的逻辑取决于模型中的其他数据。我尝试创建一个单独的课程,但没有找到正确的因素组合。例子:

在models.py中:

Class Box(models.Model):
    inv_id = models.CharField(max_length=16,default=gen_inv_id())

可调用对象将需要查询数据库模型并增加表值。我尝试在应用程序下的单独 .py 模块中创建一个类,但它需要一个返回值的方法。在这一点上,OO 不是我的强项。我认为该模型已失效,方法取决于它,因此似乎出现了先有鸡/先有蛋的场景。

谢谢你的帮助。

4

2 回答 2

5

自永远(1.0 天之前)以来,默认关键字支持可调用对象。您的代码的问题是您没有传入可调用的(default=gen_inv_id),而是可调用的()的结果default=gen_inv_id()

所以你可能想做:

Class Box(models.Model):
    inv_id = models.CharField(max_length=16,default=gen_inv_id)

查看描述此内容的最新版本的文档: https ://docs.djangoproject.com/en/1.4/ref/models/fields/#default

于 2012-04-16T22:28:14.783 回答
0

我以前遇到过这个。您可以做的一件事是覆盖类的保存方法,以便您首先保存进行计算所需的参数,然后进行计算并重新保存。如果您要覆盖 save 方法,则需要调用 super.save() (我忘记了确切的符号是什么)

编辑: super.save 的符号是 super(Model, self).save(*args, **kwargs)

于 2012-04-16T22:13:09.587 回答