У меня возникли проблемы, пытаясь понять, как создать поле динамического выбора в Django. У меня есть модель, настроенная примерно так:
class rider(models.Model):
user = models.ForeignKey(User)
waypoint = models.ManyToManyField(Waypoint)
class Waypoint(models.Model):
lat = models.FloatField()
lng = models.FloatField()
То, что я пытаюсь сделать, это создать поле выбора, значения которого являются путевыми точками, связанными с этим гонщиком (который будет человеком, вошедшим в систему).
В настоящее время я переопределяю init в моих формах следующим образом:
class waypointForm(forms.Form):
def __init__(self, *args, **kwargs):
super(joinTripForm, self).__init__(*args, **kwargs)
self.fields['waypoints'] = forms.ChoiceField(choices=[ (o.id, str(o)) for o in Waypoint.objects.all()])
Но все, что делает, это перечисляет все путевые точки, они не связаны с каким-либо конкретным райдером. Любые идеи? Спасибо.
python
django
django-forms
django-templates
что-что
источник
источник
CheckboxSelectMultiple
виджет с этим, вы захотите использоватьMultipleChoiceField
илиModelMultipleChoiceField
. Поначалу кажется, что он работаетChoiceField
, но внутреннее устройство сломается, когда вы попытаетесь сохранить форму.CheckboxSelectMultiple
виджет с этим кодом. Обязательно сменитеChoiceForm
наMultipleChoiceForm
Есть встроенное решение для вашей проблемы: ModelChoiceField .
Как правило, всегда стоит пытаться использовать,
ModelForm
когда вам нужно создать / изменить объекты базы данных. Работает в 95% случаев, и это намного чище, чем создание собственной реализации.источник
проблема в том, когда вы делаете
в запросе на обновление предыдущее значение будет потеряно!
источник
Как насчет передачи экземпляра райдера в форму при его инициализации?
источник
Под рабочим раствором с нормальным выбором поля. Моя проблема заключалась в том, что каждый пользователь имеет свои собственные опции поля выбора CUSTOM, основанные на нескольких условиях.
источник
Как указали Breedly и Liang, решение Ashok не позволит вам получить значение select при публикации формы.
Один немного другой, но все же несовершенный способ решения проблемы:
Это может вызвать некоторые проблемы с совпадением.
источник
Вы можете объявить поле как первоклассный атрибут вашей формы и просто динамически устанавливать выбор:
Вы также можете использовать ModelChoiceField и установить набор запросов в init аналогичным образом.
источник
Если вам нужно поле динамического выбора в django admin; Это работает для django> = 2.1.
Надеюсь это поможет.
источник