Как я могу передать экземпляр в docxtpl во фреймворке django?
У меня есть модель с отношениями, такими как ForeignKey, ManyToManyField и метод модели для вычисления чего-либо. Когда я запрашиваю данные из базы данных, я получаю экземпляр. Я хочу передать экземпляр в docxtpl, потому что это быстро в разработке.
пример кода в models.py
class Customer(models.Model):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=50,,null=True,blank=True)
birthdate = models.DateField(max_length=100,null=True,blank=True)
status = models.ForeignKey('status ',on_delete=models.CASCADE)
something = models.ManyToManyField('Something',blank=True)
def get_age(self):
diff = relativedelta(datetime.date.today(),self.birthdate )
return diff
пример кода в generate_docx.py. Я знаю, что doc.render() требует словарь, но я хочу передать место, потому что его легко использовать в template.docx
from docxtpl import DocxTemplate
def generate_document(instance):
doc = DocxTemplate("template.docx")
doc.render(instance)
doc.save("generated_doc.docx")
# example generate docx
customer = Customer.objects.get(uuid="UUID_CUSTOMER")
generate_document(customer)
пример шаблона.docx
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
{{customer.name}} age {{customer.geta_age}}
{% for c in customer.somthing.all %}
{{c}}
{% endfor %}
Я хочу знать, как передать экземпляр в docxtpl или преобразовать экземпляр, который имеет отношения и метод модели в dict использовать для docxtpl в совместимости. спасибо за эксперта