Переменный виджет для администраторских полей - PullRequest
1 голос
/ 08 августа 2011

Рассмотрим следующую модель:

class Item(models.Model):
   pass

class TagType(models.Model):
   tag_name = models.CharField()
   tag_value_type = models.CharField() #or any other serializable field

#and a class, which is ManyToMany for Item x TagType
class Tag(models.Model):
   item = models.ForeignKey(Item)
   tag_type = models.ForeignKey(TagType)
   value = models.CharField()

В администраторе django я хотел бы иметь встроенное редактирование для тегов внутри Item admin. Тем не мение, Я хотел бы иметь переменные элементы управления для поля значения класса Tag. Например, давайте учтите, что у меня есть два типа тегов: COLOR, который будет иметь виджет выбора / опции, и тег SIZE, который будет иметь виджет DecimalField.

Как я могу изменить виджет для поля значения при изменении значения поля tag_type? Это даже возможно? Это трудно достичь? Это означает, что могут быть разные виджеты для полей значений Tag instancef в одном экземпляре Item.

1 Ответ

0 голосов
/ 08 августа 2011

Вы можете переопределить виджет для класса формы, используемого встроенной моделью, где вы можете проверить tag_type, а затем сообщить полю значения, какой виджет вы хотите использовать для значения.

Однако этобудет проблематично при создании новых записей тегов ...

Когда вы редактируете существующие записи, у вас будет значение tag_type для определения используемого виджета, но новые записи еще не будут иметьзначение - какой виджет вы бы показывали?

Я думаю, вам лучше всего иметь двухэтапный процесс.Тот, который создает TagType, и тот, который создает / редактирует тег (ы).

...