如何在django模型中自动赋值

时间:2018-05-05 21:35:16

标签: django django-models

我有一个简单的模型类:

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')

感谢你的帮助,

2 个答案:

答案 0 :(得分:0)

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

所以你可以这样做:

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)

这是另一个参考:Result of database query as default value for Django model field?

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

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

答案 1 :(得分:0)

  

我想问你,是否有可能自动将场地字段设置为表格中的记录数量+ 1

对于这部分,你不必做任何事情。 django自动完成。它被称为“id”字段。所以在你的Model中,第一个记录的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')