Django Model поле по умолчанию переопределяется seriliazer
Я установил значение по умолчанию publish в True в модели, но после создания новой записи в EntrySerializer она сохраняется как False. Я могу исправить это вручную, переопределив метод create() в сериализаторе, но мне интересно, есть ли более элегантный способ.
class EntrySerializer(serializers.ModelSerializer):
class Meta:
model = Entry
fields = '__all__'
read_only_fields = ['author', 'slug', 'created', 'modified']
Моя модель
class Entry(models.Model):
slug = models.SlugField(max_length=255)
title = models.CharField(max_length=200)
description = models.TextField()
publish = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def save(self, *args, **kwargs):
if not self.id:
slug_str = "%s %s" % ( uuid4().hex[:6].upper(), self.title)
self.slug = slugify(slug_str)
super(Entry, self).save(*args, **kwargs)
Результаты почтового запроса
{
"id": 9,
"slug": "f4eabc-new-test",
"title": "new test",
"description": "dsfsdfs",
"publish": false,
"created": "2022-02-22T03:12:52.479158Z",
"modified": "2022-02-22T03:12:52.479190Z",
}
Я обнаружил, что мне нужно добавить publish к read_only_fields
class EntrySerializer(serializers.ModelSerializer):
class Meta:
model = Entry
fields = '__all__'
read_only_fields = ['author', 'publish', 'slug', 'created', 'modified']