2015-03-12 2 views
1

У меня есть два многотонных поля для моей модели ModelFrom, которые оба идут в одну и ту же модель, назовите ее ModelTo.django один виджет для двух m2m полей

ModelFrom(models.Model): 
    field_one = ManyToManyField(ModelTo) 
    checked = ManyToManyField(ModelTo) 

проверено является подмножеством одного поля. Я правильно проверил это в методах clean clean() и adminform clean() и обновил model :: save(), чтобы вызвать self.full_clean().

В идеале у меня будет один виджет, похожий на django.forms.SelectMultiple, но с флажком внутри каждого <option>.

, что в настоящее время он выглядит, у меня есть один из этих виджетов для каждого поля: current look:

Я хочу, чтобы объединить их и флажок или что-то, вот мое юникода представление о том, что это будет выглядеть

{[л: 2 ☐], [л: 1 ☑]}

Значение в списке -> одно поля устанавливается. Установленный флажок -> checked установлен как подмножество field_one.

Я видел jQuery UI MultiSelect Widget, но, похоже, нет возможности выбрать вариант, но не установите флажок.

+0

Я не совсем понятно, что вы хотите достичь, но мог ModelMultipleChoiceField с CheckboxSelectMultiple выполняет работу? –

ответ

0

Я не мог напрямую ответить на свой вопрос, но, как и большинство вопросов, если ответ невозможен, может возникнуть основная проблема.

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

class IntermediateField(models.Model): 
    checked = BooleanField() 
    from = ForeignKey(ModelFrom) 
    to = ForeignKey(ModelTo) 

ModelFrom(models.Model): 
    field_one = ManyToManyField(ModelTo, through=IntermediateField) 

Тогда мы можем просто использовать встроенный в IntermediateField в ModelFrom администратора, легко проверить коробки и т.д.

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