Как получить один виджет для установки 2 полей в Django? - PullRequest
3 голосов
/ 18 мая 2010

Я получил модель с 2 полями: широта и долгота. В данный момент это два поля CharField, но я хочу создать собственный виджет, чтобы установить его в админке - думал об отображении Google Maps, а затем получил координаты маркера.

Но можно ли иметь 1 виджет (одну карту) для установки 2 разных полей?

Ответы [ 3 ]

2 голосов
/ 18 мая 2010

Определите лат и длинные поля в вашей форме; установите для них использование HiddenInputWidget.

После инициализации формы добавьте еще одно поле, содержащее ваш пользовательский виджет, который принимает два значения.

В методе clean для этого добавленного поля установите значения self.cleaned_data ['lat'] и self.cleaned_data ['lng']

Возможно, есть более чистые способы, но это должно сработать

1 голос
/ 13 февраля 2012

Я использовал переопределенный метод full_clean для разделения данных.Использование метода clean_FIELD слишком поздно.

0 голосов
/ 13 октября 2012

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

Одно из решений было бы, если бы Django допускал сложные поля модели, где одно поле модели соответствует нескольким столбцам дБ, но это еще не поддерживается (см. https://code.djangoproject.com/ticket/5929)

Другое было бы, если бы Django позволил нам использовать поле формы, которое соответствует двум модельным полям, но, кажется, нет способа сделать это, и я не могу найти билет на него.

...