Django REST framework - Редактирование данных, если такая запись есть, создание - если нет

Я новичок в DRF, пишу api для последующего использования в Vue.js . Помогите разобраться, как сделать так, чтобы при добавлении номенклатуры он проверял есть ли она, и если есть, то редактировал количество путем добавления к предыдущему количеству.

Меня также интересует вопрос, каким образом при добавлении изменений в номенклатуру, количество занятых позиций вычиталось из текущего количества номенклатуры.

Возможно ли это сделать с помощью DRF или это можно реализовать в Vue.js, проверяя и отправляя POST/PUT запросы в зависимости от того, есть или нет?

<
class Nomenclature(models.Model):
    nameNom = models.CharField(max_length=150,verbose_name = "Название номеклатуры")
    numNom = models.CharField(max_length=50,verbose_name = "Номер номеклатуры",primary_key=True)
    quantity = models.IntegerField(verbose_name="Количество")
    numPolk = models.CharField(max_length=150,verbose_name = "Номер полки/места")

class Changes(models.Model):
    numNomenclature = models.ForeignKey(Nomenclature, on_delete=models.CASCADE,related_name="chamges")
    quantity = models.IntegerField(verbose_name="Количество")
    location = models.CharField(max_length=50,verbose_name = "Место установки")
    fullname = models.CharField(max_length=150,verbose_name = "ФИО")
    appointment = models.CharField(max_length=50,verbose_name = "Назначение")

    def __str__(self):
        return '%s: %d,%s,%s' % ( self.fullname,self.quantity, self.location, self.appointment)

Мой serializers.py

class CheckSerializer(serializers.ModelSerializer):
    class Meta:
        model = Changes
        fields = '__all__'

class NumSerializer(serializers.ModelSerializer):
    chamges = serializers.StringRelatedField(many=True)
    class Meta:
        model = Nomenclature
        fields = ('numNom','nameNom','quantity','numPolk','chamges')

Мой views.py:

class CreateNumList(ModelViewSet):
    queryset = Nomenclature.objects.all()
    serializer_class = serializers.NumSerializer

Выходы в такой форме:

[
    {
        "numNom": "SG-00000159",
        "nameNom": "Engine",
        "quantity": 16,
        "numPolk": "17",
        "chamges": [
            "Antonov: 1,Car,Exploitation",
            "Ivanov: 1,Car,Exploitation"
        ]
    }
]

вы можете использовать django get_or_create

читайте больше здесь например

obj, created = Nomenclature.objects.get_or_create(
    nameNom='some name')
Вернуться на верх