我有一个简单的模型类:
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')
感谢你的帮助,
答案 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')