2011-08-08 2 views
1

Рассмотрим следующую модель:Переменная виджет для администратора-рядных полей

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() 

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

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

ответ

0

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

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

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

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

Смежные вопросы