我正在创建一个名为 Project 的模型类,我想使用 Project 模型的长度。
我的意思是当我创建一个项目实例时,如果有 10 个实例,我想将订单字段的默认值设置为项目模型的长度。
如何获取模型的当前长度?
这是我的项目模型的 models.py 代码
在 models.py
class Project(models.Model):
title=models.CharField(max_length=50)
order=models.IntegerField(default=0)
isPublic=models.BooleanField(default=True)
content=models.TextField()
detailUrl=models.CharField(max_length=200)
# where to upload
image = models.ImageField(upload_to = createFileName, help_text="The recommended size of the images are 1x1")
time=models.DateTimeField(default=timezone.now)
view=models.IntegerField(default=0)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# self.order=models.IntegerField(default=0) # this works fine but this isn't what I want
self.order=models.IntegerField(default=len(Project.objects.all()))
# this is what I want but it gives me no response without emitting errors.
最佳答案
default=...
parameter [Django-doc]可以是您用来确定默认值的可调用对象。例如:
def <b>default_project_order</b>():
return Project._base_manager.count()
class Project(models.Model):
title=models.CharField(max_length=50)
order=models.IntegerField(default=<b>default_project_order</b>)
isPublic=models.BooleanField(default=True)
content=models.TextField()
detailUrl=models.CharField(max_length=200)
# where to upload
image = models.ImageField(upload_to = createFileName, help_text="The recommended size of the images are 1x1")
time=models.DateTimeField(default=timezone.now)
view=models.IntegerField(default=0)
关于python - 在 Django 中创建模型实例时如何获取模型的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57219783/