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)
很简单的问题:你能为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)