У меня есть форма django с полем множественного выбора. Поле должно быть динамическим c, то есть должны отображаться только записи, связанные с пользователем, который в настоящее время вошел в систему. Мне пока удалось собрать это вместе;
forms.py
class myForm(forms.ModelForm):
def __init__(self, someUser, *args, **kwargs):
super(myForm, self).__init__(*args, **kwargs)
someRecords = models.SomeModel.objects.filter(someUser = someUser)
#The line above gets records associated with a specific user
displayNames = []
for i in someRecords:
displayNames.append((i.someField, i.someOtherField + ' ' + i.someOtherField2))
#I am basically making a list of tuples, containing a field and a concatnation of two other fields. The latter will be what is displayed in the select box
self.fields['theSelectField'] = forms.ChoiceField(choices = displayNames)
class Meta:
#I defined model, fields and labels here
views.py
def myFormPage(request):
someUser = request.user.someextensionofuser.someUser
form = forms.myForm(someUser)
context = {'form': form}
if request.method == 'POST':
form = forms.myForm(someUser, data = request.POST)
if form.is_valid():
#Do Stuff if form is valid. However,this stuff doesn't get done, the page refreshes instead
Итак, мне удалось сделать выбор опции Dynami c. Однако теперь я не могу отправить данные.
EDIT: один из комментариев помог мне решить ранее указанную проблему. Я обновил код views.py. Однако теперь я сталкиваюсь с этой ошибкой;
Невозможно назначить «someString»: «someModel.someField» должен быть экземпляром «someForeignModel»
значения параметров кажутся строками, а не ссылками на объекты. Как решить эту проблему?