elapouya / python-docx-template

Use a docx as a jinja2 template
GNU Lesser General Public License v2.1
1.91k stars 378 forks source link

render duplicate #480

Open lucy304 opened 1 year ago

lucy304 commented 1 year ago

The debug code prints different contexts, but the generated words content is same as the generated the first word,i cannot find the bug.

def do_action(self, queryset):
    for obj in queryset:
        m2 = obj.disk_number
        m1 = obj.ring_model
        print(obj.connect_condition1)
        context = {"ring_model": m1.ring_model, 'ring_number': obj.ring_number, 'stage': m1.stage,
                   'drawing_number': m1.drawing_number, 'specification': m1.specification,
                   'ring_batch': obj.ring_batch, 'disk_number': m2.disk_number, 'fiber_batch': m2.fiber_batch,
                   'factory': obj.factory,'rao_lenth':obj.rao_lenth,'rao_width':obj.rao_width,
                   'model_specifications': m2.model_specifications, 'invert_lens': m1.invert_lens,
                   'ring_length': obj.ring_length, 'between_lens': obj.between_lens,
                   'invert_device': obj.invert_device, 'invert_device1': obj.invert_device1,
                   'inverter': obj.inverter,
                    }
        print(context)
        dir_name = 'D:\Report'
        if not os.path.exists(dir_name):
            os.mkdir(dir_name)
        tep = m1.template_name
        if tep.name == '一':
            tpl1.render(context)
            tpl1.save(dir_name + "\\" + obj.ring_number + '.docx')
        elif tep.name == '二':
            tpl2.render(context)
            tpl2.save(dir_name + "\\" + obj.ring_number + '.docx')
        elif tep.name == '三':
            tpl3.render(context)
            tpl3.save(dir_name + "\\" + obj.ring_number + '.docx')
        elif tep.name == '四':
            tpl4.render(context)
            tpl4.save(dir_name + "\\" + obj.ring_number + '.docx')
elapouya commented 1 year ago

Does tests/multi_rendering.py works for you ?

lucy304 commented 1 year ago

Does tests/multi_rendering.py works for you ?

no,i only generate one word and quote one template one time,the result is still that i generate several words which name is different and content is same in several times when i quote one template