Как сохранить данные django в модели tow
hi пожалуйста помогите мне у меня есть модель я хочу после создания и сохранения сохранить результат сохранить в основном хранилище как это
store.name == mainstore.name
store.the_rest_of_quantity==mainstore.quantity
я пытаюсь использовать сигналы, но у меня не получается
class Store(models.Model):
CHOICES = (
('NUM','number'),
('M','meter'),
)
name = models.CharField(max_length=60)
quantity = models.PositiveSmallIntegerField (validators=[MinValueValidator(0)],default=0,blank=True,null=True)
date_of_add = models.DateTimeField(auto_now_add=True)
add_new_item = models.PositiveSmallIntegerField (validators=[MinValueValidator(0)],default=0,blank=True,null=True)
date_of_remove = models.DateTimeField(auto_now =True)
remove_old_item = models.PositiveSmallIntegerField (validators=[MinValueValidator(0)],default=0,blank=True,null=True)
the_rest_of_quantity = models.PositiveSmallIntegerField (validators=[MinValueValidator(0)],default=0,blank=True,null=True)
accept_stor = models.BooleanField(default = False)
classyfiyed = models.CharField(max_length=3,choices=CHOICES,blank=True,null=True)
def __str__(self):
return 'Device Name :( {0} ) Have Quantity({1}) '.format(self.name,self.quantity)
def save(self, *args, **kwargs):
try:
totla_sum = sum([self.quantity , self.add_new_item])
self.the_rest_of_quantity = int(totla_sum - self.remove_old_item)
except Expression as identifier:
'you add remove bigger than quantity'
return super().save(*args, **kwargs)
class MainStore(models.Model):
name = models.CharField(max_length=120)
quantity = models.PositiveIntegerField (null=True,default=0)
store = models.OneToOneField(Army,on_delete=models.CASCADE,related_name='Store',null=True)
я использую сигналы для решения этой проблемы
signals.py
@receiver(post_save,sender=Store) def create_store(sender,instance,created,**kwargs): if created: MainStore.objects.get_or_create(Store=instance,name=instance.name,quantity=instance.the_rest_of_quantity) else: obj_store = MainStore.objects.filter(Store=instance) update_store = obj_store.update(name=instance.name,quantity=instance.the_rest_of_quantity) return update_store
apps.py
from django.apps import AppConfig
class StoreConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'Store' def ready(self): import Store.signals
init.py
default_app_config = "Store.apps.StoreConfig"