Когда я выбираю логическое поле, обновление отражается в базе данных, а не в выводе JSON, почему? (Django Rest Framework Serializer) - PullRequest
1 голос
/ 03 июля 2019

Предполагая, что мне нужно переопределить метод обновления в DRF ModelSerializer - всякий раз, когда я запускаю PATCH для обновления логического поля с False на True, это не будет отражаться в выводе JSON. Но когда я проверяю это отражается в базе данных SQLite. Затем я запускаю PATCH или GET, чтобы снова запросить данные, только тогда изменение отобразится в выводе JSON. Почему это происходит и есть ли способ, чтобы изменение было немедленно отражено в выводе тела JSON?

Код ниже показывает урезанную версию моего класса JobSerializer.

class JobSerializer(serializers.ModelSerializer):

    class Meta:
        model = Job
        fields = (
            'slug',
            'student',
            'service',
            'time_slots',
            'tutor_accept',
        )

    def update(self, instance, validated_data):
        instance.tutor_accept = validated_data.get('tutor_accept', instance.tutor_accept)
        instance.save()
        return instance

А вот и моя модель работы.

class Job(MyModel):
    student = models.ForeignKey(Profile, related_name='jobs', on_delete=models.CASCADE)
    service = models.ForeignKey(Service, related_name='jobs', on_delete=models.CASCADE)
    time_slots = models.ManyToManyField(Schedule)
    tutor_accept = models.BooleanField(default=False)       

Вот мой вид JobDetail:

class JobDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Job.objects.all()
    serializer_class = JobSerializer
    permission_classes = (permissions.IsAuthenticated,)
    lookup_field = 'slug'

Базовый класс MyModel

class MyModel(models.Model):
    slug = models.UUIDField(primary_key=True, default=uuid.uuid4, unique=True, editable=False)

    class Meta:
        abstract = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...