Skip to main content

方便快捷的pdf导出工具

Project description

新加PdfAdmin,如有需要导出pdf的admin直接继承PdfAdmin 如需在列表添加查看pdf功能,在list_display中添加'pdf_show'字段

setting.py中

INSTALLED_APPS = [
	----------其他APP
    'pdfExport'
    -----------其他APP
]

admin中

注pdf_fields中可加入的元素

1.filed1和filed2字段各占一行

pdf_fields = ('filed1','filed2')

例图

2.filed1和filed2字段共占一行,filed3单独一行

pdf_fields = (('filed1','filed2'),'filed3')

例图1

3.filed1和filed2字段共占一行,filed3单独一行,title1为filed1和filed2的标题,title2为filed3标题

pdf_fields = (('title1', {('filed1', 'filed2')}), ('title2', {('filed3',)}),'filed4')

例图2

@admin.register(TodoItem)
class TodoItemAdminBase(PdfAdmin):
    list_display = ('title', 'assignee', 'created_at', 'updated_at', 'is_completed', 'pdf_show')
    list_filter = ('created_at', 'updated_at', 'assignee')
    search_fields = ('title', 'assignee')
    # pdf要显示的字段
    # 注:每行最多放两个字段
    pdf_fields = (('组标题', {('title', 'assignee')}), 'handler', ('时间', {('created_at',)}), 'type')
    # pdf标题
    pdf_title = '策略申请表'
    # 要显示所有选项的字段
    option_fields = ['type', ]
    # 左右上方小标题
    left_tip = '编号AAA'
    right_tip = '编号BBB'
    # 如有其他需求,可以自定义pdf_template,继承base_pdf_template.html,添加需要的模块

4.关联表展示,定义pdf_related_fields,下列代码中modelx,model_bs,model_cs为关联字段,自定义标题x,自定义标题b,自定义标题c为关联模型的表格标题,第三个元素同pdf_fields使用方法一样。

class ModelType(models.Model):
    name = models.CharField(max_length=100, verbose_name='名称')

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '选项类型'
        verbose_name_plural = verbose_name


class ModelX(models.Model):
    model_filed1 = models.CharField(max_length=100, verbose_name="模型X字段1")
    model_filed2 = models.CharField(max_length=100, verbose_name="模型X字段2")
    model_filed3 = models.CharField(max_length=100, verbose_name="模型X字段3")
    model_filed4 = models.CharField(max_length=100, verbose_name="模型X字段4")
    model_filed5 = models.CharField(max_length=100, verbose_name="模型X字段5")
    model_filed6 = models.CharField(max_length=100, verbose_name="模型X字段6")
    model_filed7 = models.ForeignKey(ModelType, on_delete=models.CASCADE, blank=True, null=True,
                                          verbose_name="模型X字段7")

    def __str__(self):
        return self.model_filed1


class ModelA(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    modelx = models.ManyToManyField(ModelX, related_name='model_as')

    def __str__(self):
        return self.name


class ModelB(models.Model):
    model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE, related_name='model_bs')
    title = models.CharField(max_length=100)
    content = models.TextField()

    def __str__(self):
        return self.title


class ModelC(models.Model):
    model_a = models.ForeignKey(ModelA, on_delete=models.CASCADE, related_name='model_cs')
    title = models.CharField(max_length=100)
    content = models.TextField()

    def __str__(self):
        return self.title
class ModelAAdmin(PdfAdmin):
    list_display = ('name', 'description', 'pdf_show')  # 在Admin列表页显示的字段
    inlines = [ModelBInline, ModelCInline]  # 在ModelA的编辑页面嵌入ModelB的编辑表单
    # pdf要显示的字段
    pdf_related_fields = [

        ('modelx', '自定义标题x', (('model_filed1', 'model_filed2'),
                  ('组标题1', {('model_filed3', 'model_filed4')}),
                  'model_filed5',
                  ('组标题2', {('model_filed6',)}),
                  'model_filed7')),
        ('model_bs', '自定义标题b', ('title', 'content')),
        ('model_cs', '自定义标题c', ('title', 'content')),
    ]
    option_fields = ('model_filed7',)

    # pdf_related_fields = ('model_bs', 'model_cs')
    pdf_fields = (('name', 'description'),)
    # pdf标题
    pdf_title = 'pdf标题'
    # 要显示所有选项的字段
    # 左右上方小标题
    left_tip = '编号AAA'
    right_tip = '编号BBB'

img_3.png 例图3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qz_pdf_export-0.1.10.tar.gz (548.0 kB view hashes)

Uploaded Source

Built Distribution

qz_pdf_export-0.1.10-py3-none-any.whl (284.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page