如何在django模型中自动赋值

如何在django模型中自动赋值,django,django-models,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') 我想问你们,是否有可能自动将place字段的默认值设置为表+1中的记录数 例如,如果表中没有记录,系统会自动将行更改为 place = models.Cha

我有一个简单的模型类:

class MyModel(models.Model):
    place = models.CharField(max_length=25, verbose_name='Place')
    name = models.CharField(max_length=25, verbose_name='Name')
我想问你们,是否有可能自动将place字段的默认值设置为表+1中的记录数

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

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

将感谢您的帮助,

默认值可以是可调用的。i、 e:您可以调用类上的方法来计算您想要的值

所以你可以做:

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)
类MyModel(models.Model):
def compute_默认值(自身):
返回
place=models.CharField(最大长度=25,详细名称=place',默认值=compute\u默认值)
下面是另一个参考:

您可以考虑的另一个选项是在保存对象时执行此操作。 见:

您可以使用信号,或者重写对象上的.save()方法

我想问你们,是否有可能自动将place字段的默认值设置为表+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')