我覆盖了保存方法,保存所有更改并调用该函数save_pdf()(将所有数据写入 pdf)。
模型.py
class PhoneNumber(models.Model):
person = models.ManyToManyField(Person, verbose_name = "Люди")
phone = models.CharField('Номер телефона', max_length = 20)
def __str__(self):
return self.phone
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
save_pdf()
对于电话字段,一切都很好,每次保存它也会在 pdf 文件中更改。但是有了 m2m 连接,麻烦就来了。调用函数时该字段不会更新save_pdf(),旧值仍然存在。
save_pdf()
people = Person.objects.All()
for k, person in enumerate(people):
for phone in person.phonenumber_set.filter(person=person):
phones = phones + str(phone)+', '
fio = Paragraph(str(person.name), styleBH)
table_data.append([fio, phones])
里面的代码save_pdf()很长,所以我把主要部分扔掉了。由报告实验室使用。我对用户和他们的电话进行分类。然后我愚蠢地将所有内容写入文件。
解决了问题
m2m_changed