Пользовательский атрибут Django ModelField
Очень простой вопрос: можно ли сделать пользовательский атрибут для поля? У меня есть модель Customer с кучей полей. 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)