如何在创建新模型后获取模型默认值,而不调用另一个 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 它可能会有帮助。