我有一个简单的模型类:
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')