обновить поле, связанное с manytomany, пока экземпляр был создан в django - PullRequest
1 голос
/ 20 июня 2020

Я хочу обновить поле, связанное с M2M, всякий раз, когда был создан экземпляр MobileCustomer Я пробовал сигналы, но это кажется сложным для ManyToManyField, я хочу обновить active с active=True до active=False поля в модели Imei

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

def mobile_customer(sender,instance,created,*args,**kwargs):
if created:

     for status in instance.imei.all():
         Imei.objects.filter(pk=status.id).update(active=False)

post_save.connect(mobile_customer,sender=SelectMobile)

, а также это в моем CreateView классе views.py

Imei.objects.filter(selectmobile__item=self.object).update(active=False)

даже если я попытаюсь напечатать Imei.objects.filter(selectmobile__item=self.object).update(active=False), результат будет 0!

это моя модель дизайна

class MobileCustomer(models.Model):
    customer = models.CharField(max_length=30)
    phone = models.CharField(max_length=13)
    mobile = models.ManyToManyField(MobileStorage,through='SelectMobile')

class SelectMobile(models.Model):
    mobile = models.ForeignKey(MobileStorage,on_delete=models.CASCADE)
    item = models.ForeignKey(MobileCustomer,on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField(default=1)
    imei = models.ManyToManyField(Imei)

class MobileStorage(models.Model):
    mobile = models.ForeignKey(Mobile,on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField()

class Mobile(models.Model):
    mobile_name = models.CharField(max_length=40,unique=True)

class Imei(models.Model):
    imei = models.CharField(max_length=15,verbose_name='IMEI',unique=True)
    mobile = models.ForeignKey(MobileStorage,on_delete=models.CASCADE)
    active = models.BooleanField(default=True)

Я ценю вашу помощь .. спасибо

...