#python #html #django #plugins
#python #HTML #django #Плагины
Вопрос:
Django multiselect не возвращает / не отображает выбранные варианты, сохраненные в базе данных
form.py
class testform(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
temp = User.objects.values_list('username', flat=True).filter(groups__name = "Artist")
OPTIONS1 = zip(temp, temp)
self.fields['column'].choices = [OPTIONS for OPTIONS in OPTIONS1]
column = forms.MultipleChoiceField(required = True, choices= [])
Выбор параметров проходит нормально, как
views.py
def index(request):
if request.method == "POST":
form = testform(request.POST)
if form.is_valid():
form.save()
return redirect('index')
else:
form = testform()
return render(request, 'dummy/index.html', {
'edit_form' : form})
Данные сохраняются как однажды выбранные
['artist1', 'artist2', 'artist3']
Но при повторном посещении той же страницы он не показывает выбранные варианты этого экземпляра, вместо этого в поле выбрать несколько вариантов нет выбора из указанных выше 3 вариантов
Получение представления
def dummyedit(request, id):
obj = bfs_projects.objects.get(id = id)
if request.method == "POST":
form = testform(request.POST, instance =obj)
if form.is_valid():
form.save()
return redirect('index')
else:
form = testform(instance =obj)
return render(request, 'dummy/index.html', { 'edit_form' : form, })
models.py
class bfs_projects(models.Model):
column = models.CharField(max_length = 255)
Небольшая помощь настоятельно приветствуется,
Заранее спасибо
Комментарии:
1. Форма, которую вы визуализируете, инициализируется следующим образом:
testform()
. Итак, вы инициализируете его пустым. Если вы хотите, чтобы форма отображала начальные значения, вы можете передатьinitial
словарь. В вашем случае у вас естьModelForm
, поэтому вы должны передать ему начальный экземпляр :form = testform(instance=MyModel.objects.get(id=<theidtoshow>)
. Однако, похоже, ваше представление не относится к конкретному экземпляру, поэтому я понятия не имею, какой экземпляр вы хотели бы показать.2. У меня есть представление редактирования, def dummyedit(запрос, идентификатор): obj = bfs_projects.objects.get(id = id) если запрос.метод == «POST»: форма = тестовая форма (запрос. POST, instance =obj) если form.is_valid(): form.save() возвращает перенаправление (‘index’) иначе: form = testform(instance =obj) возвращает рендеринг (запрос, ‘dummy/index.html ‘, {‘edit_form’ : форма, }) Когда я визуализирую это представление, ононе выбирает выбранные варианты, извините, я не прикрепил это представление в начале, подумал, что это понятно
3. тогда представление индекса не имеет отношения к вашему вопросу, поскольку это не представление, отображающее страницу, на которой у вас есть неожиданный результат. Добавьте правильное представление в свой вопрос.
4. Извиняюсь за ошибку, добавил правильное представление здесь
5. есть
column
ли поле в вашей модели?