Django instance.add() не работает при добавлении нового поля m2m
Разница между кодом 1 и кодом 2, приведенным ниже, заключается в том, что поля industry и dindustry поменялись местами. В то время как код 1 работает нормально, код 2 не обновляет базу данных. Может кто-нибудь помочь.....
Примечание:
- Таблица была изменена, а dindustry была создана заново.
- Нет проблем с миграцией, я могу добавлять записи как в industry, так и в dindustry через django Admin .
Код 1:
@receiver(m2m_changed, sender=Company.dindustry.through)
def video_category_changed(sender, instance, action, pk_set, **kwargs):
if action == "post_add":
sectors = Sectors.objects.filter(id__in=pk_set)
roots = set()
for sector in sectors:
root = sector.get_root()
if not instance.industry.filter(id=root.id).exists():
instance.industry.add(root)
print('data added')
Код 2:
@receiver(m2m_changed, sender=Company.industry.through)
def video_category_changed(sender, instance, action, pk_set, **kwargs):
if action == "post_add":
sectors = Sectors.objects.filter(id__in=pk_set)
roots = set()
for sector in sectors:
root = sector.get_root()
if not instance.dindustry.filter(id=root.id).exists():
instance.dindustry.add(root)
print('data added')
Моя модель выглядит следующим образом:
class Company(MPTTModel):
industry = models.ManyToManyField(Sectors, related_name='relatedname_industry', blank=True)
dindustry = models.ManyToManyField(Sectors, related_name='relatedname_dindustry', blank=True)
class Sectors(MPTTModel):
sector = models.CharField(max_length=100)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
Он хорошо работает с одним m2m-полем, но не работает с другим m2m-полем в той же таблице