Как вычесть содержимое IntegerField одной таблицы из другой в Django?

Как это работает: Когда я добавляю товар в таблицу Bouquet, в классе CompositionOfTheBouquetInline можно выбрать объект из таблицы Flower и выбрать количество цветов.

Что нужно сделать: При добавлении цветка и его количества, нужно удалить это количество цветов и сохранить его в таблице Flower, столбике stock.

Например,

  • в таблице Flower есть цветок "Роза", количество на складе (stock) = 10
  • в таблице Bouquet есть букет "Букет из роз", stock = 1
  • в таблице CompositionOfTheBouquet выбираем цветок "Роза" в количестве 5 и сохраняем

Что должно произойти:

  • stock цветка "Роза" теперь = 5

Формула: Flower.stock = Flower.stock - (CompositionOfTheBouquet.count * Bouquet.stock)

models.py

class Flower(models.Model):
    title = models.CharField(verbose_name='Название', max_length=100)
    stock = models.PositiveIntegerField(verbose_name='Остаток на складе', default=0)

class Bouquet(models.Model):
    title = models.CharField(verbose_name='Название', max_length=150)
    stock = models.PositiveIntegerField(verbose_name='Остаток на складе', default=0)

class CompositionOfTheBouquet(models.Model):
    flower = models.ForeignKey(
        Flower, verbose_name='Выбрать цветок', on_delete=models.PROTECT
    )
    bouquet = models.ForeignKey(
        Bouquet, verbose_name='Состав', on_delete=models.PROTECT
    )
    count = models.PositiveIntegerField(verbose_name='Количество', default=0)

admin.py

class CompositionOfTheBouquetInline(admin.TabularInline):
    model = CompositionOfTheBouquet

@admin.register(Flower)
class Flower(admin.ModelAdmin):
    pass

@admin.register(Bouquet)
class Bouquet(admin.ModelAdmin):
    inlines = [CompositionOfTheBouquetInline, ]
Вернуться на верх