можем ли мы обновить экземпляр, связанный с внешним ключом django signls - PullRequest
0 голосов
/ 10 июля 2020

привет, я хочу обновить экземпляр, связанный со значением внешнего ключа

например, у меня есть эти две модели

class Collection(models.Model):
    model = models.ForeignKey(Product, on_delete=models.CASCADE) 
    company_name = models.ForeignKey(Company,on_delete=models.SET_NULL,null=True)
    price = models.IntegerField()
    cash = models.IntegerField()
    qnt = models.IntegerField()

    @property
    def product_loan(self):
        return (self.price * self.qnt ) - self.cash

class Company(models.Model):
    name = models.CharField(max_length=40)
    balance= models.IntegerField()

я хочу, чтобы каждый раз, когда был создан экземпляр из Collection, тогда обновить баланс в Company Я пробовал этот сигнал django, но похоже, что он не работает

def post_save_collection(sender,instance,created,*args,**kwargs):
    if created:
        instance.company_name.balance =instance.company_name.balance +((instance.price * instance.qnt) - instance.cash)
        #and also tried this but not worked 
        #instance.company_name.balance = instance.product_loan
post_save.connect(post_save_collection,sender=Collection)

есть что-то, что я пропустил, пожалуйста? или мне что-то еще поменять?

1 Ответ

0 голосов
/ 10 июля 2020

мне пришлось использовать update

def post_save_collection(sender,instance,created,*args,**kwargs):
    if created:
        Company.objects.filter(name=instance.company_name).update(
        balance=F('balance')+instance.product_loan
           )
post_save.connect(post_save_collection,sender=Collection)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...