У меня есть две модели, такие как,
class ModelA(models.Model):
counter = models.SmallIntegerField(db_column='counter', blank=False, default=0)
class ModelB(models.Model):
a = models.ForeignKey(ModelA, on_delete=models.CASCADE, null=False, related_name='relation_a')
Сериализатор ModelB. Я смотрю, есть ли уже строка ModelA в таблице ModelB. Если есть, я увеличиваю значение в ModelA; в противном случае я создаю его и помещаю значение счетчика 1 в ModelA. Ответом является значение счетчика, поступающее от ModelA. Проблема в том, что ответом является старое значение перед выполнением этой функции создания.
class ModelBSerializer(BaseSerializer):
a = serializers.IntegerField(read_only=True, source='a.counter')
def create(self, validated_data):
try:
bInstance = ModelB.objects.get(a__id=validated_data.get('modelA').id)
aInstance = ModelA.objects.get(pk=validated_data.get('a').id)
aInstance.counter = 1
aInstance.save()
except DealThumbsCounter.DoesNotExist:
bInstance = ModelB.objects.create(**validated_data)
aInstance = ModelA.objects.get(pk=validated_data.get('modelA').id)
aInstance.counter += 1
aInstance.save()
bInstance.save()
return bInstance
class Meta:
model = ModelB
fields = ['counter']
Я использую drf-nested, а URL-адрес равен
POST /modelA/{model_a_id}/modelB/
Как получить обновленный счетчик ценность? Заранее спасибо.