如何在 django 模型中自动赋值



我有一个简单的模型类:

class MyModel(models.Model):
place = models.CharField(max_length=25, verbose_name='Place')
name = models.CharField(max_length=25, verbose_name='Name')

我想问你,是否有可能自动将位置字段的默认值设置为表中的记录数 + 1

因此,例如,如果表中没有记录,系统会自动将行更改为

place = models.CharField(max_length=25, verbose_name='Place', default='1')

将感谢您的帮助,

默认值可以是可调用的。 即:您可以在类上调用一个方法来计算您想要的值是什么。

所以你可以做:

class MyModel(models.Model):
def compute_default(self):
return <compute default, from query>
place = models.CharField(max_length=25, verbose_name='Place', default=compute_default)

这是另一个参考:数据库查询结果作为 Django 模型字段的默认值?

您可以考虑的另一个选项是在保存对象时执行此操作。 请参阅: https://docs.djangoproject.com/en/2.0/ref/models/instances/#what-happens-when-you-save

您可以使用信号,也可以覆盖对象上的 .save() 方法。

我想问你,是否有可能自动将位置字段设置为表中的记录数 + 1 的默认值

对于这部分,您不必执行任何操作。 Django 会自动执行此操作。它被称为"id"字段。因此,在您的模型中,第一条记录的 id 为 1,第二条记录的 id 为 2,依此类推。 对于其他默认值,可以使用默认关键字。

class MyModel(models.Model):
place = models.CharField(max_length=25,verbose_name='Place',default="SomePlace")
name = models.CharField(max_length=25, verbose_name='Name')

最新更新