如何在创建新模型后获取模型默认值,而不调用另一个 get?
How to get the model default value after creating new, without call another get?
有没有办法在创建新行后获取默认值(例如UUID类型的ID)。
这是我的模型
class Employee(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name= models.CharField(max_length=255)
created_at = models.DateField(default=None, blank=True, null=True)
class Meta:
db_table="business"
当我创建时,我会这样做,例如
from rest_framework import generics
from django.forms.models import model_to_dict
class Create(generics.CreateAPIView):
def post(self, request)
inputData = {"name":"abcdef", "created_at": datetime.datetime.now}
employee = Employee.objects.create(**inputData)
return JsonResponse(model_to_dict(employee), safe=False)
这是回复:
{
"name": "abcdef",
"created_at": "2022-05-24T10:36:39.126",
}
所以现在我不知道我刚刚创建的新行的 ID 是什么
发生这种情况是因为您将 id
设置为 non-editable。同时,model_to_dict
returns 适合作为表单的 initial
关键字参数传递的字典。
您可以很容易地检查model_to_dict
的源代码,并看到具有此类属性集的字段被跳过了。检查这个 Convert Django Model object to dict with all of the fields intact 它可能会有帮助。
有没有办法在创建新行后获取默认值(例如UUID类型的ID)。
这是我的模型
class Employee(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name= models.CharField(max_length=255)
created_at = models.DateField(default=None, blank=True, null=True)
class Meta:
db_table="business"
当我创建时,我会这样做,例如
from rest_framework import generics
from django.forms.models import model_to_dict
class Create(generics.CreateAPIView):
def post(self, request)
inputData = {"name":"abcdef", "created_at": datetime.datetime.now}
employee = Employee.objects.create(**inputData)
return JsonResponse(model_to_dict(employee), safe=False)
这是回复:
{
"name": "abcdef",
"created_at": "2022-05-24T10:36:39.126",
}
所以现在我不知道我刚刚创建的新行的 ID 是什么
发生这种情况是因为您将 id
设置为 non-editable。同时,model_to_dict
returns 适合作为表单的 initial
关键字参数传递的字典。
您可以很容易地检查model_to_dict
的源代码,并看到具有此类属性集的字段被跳过了。检查这个 Convert Django Model object to dict with all of the fields intact 它可能会有帮助。