Django изменения данных через модели
Подскажите, какой из вариантов, будет более производителен, правилен и рабочим
У меня есть две таблицы. В таблице Book я создаю запись и хочу что бы при её создании она автоматически создавала запись в классе Store - это я реализовал через переопределение метода Save.
А вторым действием, когда в таблице Store поле stock = 0, тогда в таблице Books поле is_available = False. Но для такого случая, мне придётся в методе Save добавлять новую переменную и передавать её.
файл Book/book.py
from store.models import *
class Books(models.Model):
name = models.TextField(blank=False, null=False)
price = models.FloatField(blank=False, null=False)
is_available = models.BoleanField(blank=False, null=False, default=True)
def save(self, available=None, *args, **kwargs):
if available
new_bookStore = Store(
book_id = self,
store=1
)
new_bookStore.save()
super().save(*args, **kwargs)
файл Store/store.py
import Book.Books as book_mod
class Store(models.Model):
book_id = models.ForeignKey('Book.Books', blank=False, null=False, on_delete=models.DO_NOTHING)
store = models.IntegerField(blank=False, null=False)
stock = models.IntegerField(blank=False, null=False, default=None)
def save(self, *args, **kwargs):
if store == 0:
change_book = book_mod.Books.objects.filter(id=self.book_id).first()
change_book.is_available = False
change_book.save(available=False)
super().save(*args, **kwargs)
Второй вариант навесить на таблицу Book триггер в бд, который будет при появлении новой записи сразу создавать новую запись в таблице Store. И второй триггер на таблицу Store, который будет проверять значение Stock и в случае если оно = 0, менять в таблице Book значение is_available на False.
И третий вариант, если я не ошибаюсь, можно сделать через drf и сериализаторы. При котором когда создаётся запись в Books можно сразу принимать второй сериалайзер для Store.
Подскажите, какой вариант мне лучше использовать для данной задачи или возможно у Вас есть свои варианты