Django 模型字段自定义属性

Django ModelField custom attribute

很简单的问题:你能为Field做一个自定义属性吗? 我有一个带有一堆字段的客户模型。 Charfields、ForeignKeys、IntegerFields、BooleanFields 等

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

这可能吗?如果是或不是,我该怎么做?

您试图混淆数据逻辑和业务逻辑。您描述了该模型的一个用例:何时保存。您提到的 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)