如何在创建new后获得模型默认值,而无需调用另一个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设置为不可编辑的。同时,model_to_dict返回一个适合作为Form的initial关键字参数传递的字典。

您可以很容易地检查model_to_dict的源代码,并看到具有该属性集的字段被跳过。检查这个Convert Django Model对象,让它的所有字段都保持完整,这可能会有帮助。

最新更新