Я использую Джанго v1.10.2
Я пытаюсь создать динамические отчеты, в которых я сохраняю поля и условия, а также основную информацию о модели ORM в базе данных.
Мой код для генерации динамического отчета
class_object = class_for_name("app.models", main_model_name)
results = (class_object.objects.filter(**conditions_dict)
.values(*display_columns)
.order_by(*sort_columns)
[:50])
Таким образом, main_model_name
может быть чем угодно.
Это прекрасно работает, за исключением того, что иногда связанные модели main_model
имеют choicefield
.
Таким образом, для одного из отчетов main_model
равно Pallet
.Pallet
содержит много PalletMovement
.
Мои отображаемые столбцы: serial_number
, created_at
, pallet_movement__location
Первые два столбца — это поля, принадлежащие модели Pallet
. Последний от PalletMovement
Что происходит, так это то, что модель PalletMovement
выглядит так:
class PalletMovement(models.Model):
pallet = models.ForeignKey(Pallet, related_name='pallet_movements',
verbose_name=_('Pallet'))
WAREHOUSE_CHOICES = (
('AB', 'AB-Delaware'),
('CD', 'CD-Delaware'),
)
location = models.CharField(choices=WAREHOUSE_CHOICES,
max_length=2,
default='AB',
verbose_name=_('Warehouse Location'))
Поскольку набор запросов вернет мне необработанные значения, как я могу использовать модель choicefield
в PalletMovement
, чтобы убедиться, что pallet_movement__location
дает мне отображение AB-Delaware
или CD-Delaware
?
Имейте в виду, что main_model
может быть любым в зависимости от того, что я храню в базе данных.
Предположительно, я могу хранить больше информации в базе данных, чтобы лучше фильтровать и представлять данные.