1

非常简单的问题:您可以为字段制作自定义属性吗?我有一个带有一堆字段的客户模型。Charfields、ForeignKeys、IntegerFields、BooleanFields 等。

当为新客户提交表单时,我想将数据导出到现有的 Excel 模板,其中单元格名称为 B1,值 B2。所以我想给每个字段一个“单元格位置”属性,这样我就可以遍历单元格并轻松地为每一列分配它们的值,比如name = models.CharField(verbose_name='Name',max_length=30,'cell position' = 'B2'),

那可能吗?如果是这样与否,我将如何去做?

4

1 回答 1

1

您正试图将数据逻辑和业务逻辑混为一谈。您描述了该模型的一个用例:何时保存。您提到的cell position仅适用于该用例,例如,当您需要通过其名称查找客户时,它将无用。

将这些常量放入负责保存Customer到 excel 文件的文件中是很有意义的,如下所示:

class CustomerExcelExporter():
    CUSTOMER_FIELD_TO_FILE_CELLS = {
        "name": "B2",
        # ...
    }

    _worksheet: Worksheet
    _customer: Customer

    # ...

    def _fill_customer_own_fields(self):
        for field, cell in self.CUSTOMER_FIELD_TO_FILE_CELLS:
            self._worksheet.write(cell, getattr(self._customer, field)
于 2021-12-24T13:10:34.673 回答