У меня есть приложение, которое принимает в качестве одного из полей формы несколько списков.Данные определяются на html-странице как «temp_groups», затем в view.py для form.cleaned_data ['actual field'] устанавливается извлеченное временное поле.Извлеченные данные выглядят корректно (2,3) и, глядя на то же поле после выполнения form.save (), выглядит корректно.Но данные не отображаются в базе данных таким образом.Он использует значение, установленное в фактическом «скрытом» поле на html-странице.Вот код
Пробовал с использованием фактического имени поля (group_members), но в результате фактически публикуется только последнее значение, выбранное из списка.
Также попытался настроить виджет на формахФайл .py, в котором данные, используемые при поставке, получены из запроса объекта User (auth_user).Но это никак не повлияло.
url.py
urlpatterns = [..
path('newgroups/', views.newgroups, name='newgroups'),
forms.py
class QueryGroupsForm(forms.ModelForm):
class Meta:
model = QueryGroups
fields = ['group_name',
'group_desc',
'group_members',
]
models.py
class QueryGroups(models.Model):
group_name = models.CharField(max_length=40, null=True, blank=True)
group_desc = models.CharField(max_length=100, null=True, blank=True)
group_members = models.CharField(max_length=100, null=True, blank=True)
групп запросов.html
<div class="col-3">
<div class="form-group">
<label for="temp_members" class="" style="font-weight: bold;">Group Members<label>
<select id="temp_members" name="temp_members" class="form-control" multiple="multiple">
{% for nextUser in users %}
<option value="{{nextUser.id}}">{{nextUser.username}}</option>
{% endfor %}
</select>
<input type="hidden" name="group_members" id="group_members" value="TBD">
</div>
</div>
views.py
def newgroups(request):
if request.method == "POST":
group_form = QueryGroupsForm(request.POST)
user_list = request.POST.getlist('temp_members')
users_of_group = ""
for next_user in user_list:
users_of_groups += next_user + ","
list_len = len(users_of_groups)
users_of_group = users_of_group[:list_len - 1]
if group_form.is_valid():
group_form.cleaned_data['group_members'] = str(user_of_group)
group_form.save()
post_list = group_form.cleaned_data['group_members']
return HttpResponse("user_of_group: " + users_of_group + " post_list: " + str(post_list))
На HttpResponse представлено «users_of_group: 2,3 post_list: 2,3».Однако в поле group_members в базе данных находится значение «TBD», которое задается как скрытое поле в html-файле.