Как получить значение модели по умолчанию после создания новой, без вызова еще одного get?

Есть ли способ получить значение по умолчанию (например, ID типа UUID) после создания нового ряда.

Вот моя модель

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's initial.

Вы можете легко проверить исходный код model_to_dict и увидеть, что поля с таким набором атрибутов пропускаются. Посмотрите вот это Преобразование объекта Django Model в dict со всеми полями, это может быть полезно.

Вернуться на верх