Я новичок в Django, и я узнал некоторые основные вещи об этом. Моя проблема в том, что я получаю данные от моделей django, но я не могу передать/отобразить их в форме. Я хотел бы иметь form.py с 1 селектором phone_id и 3 текстовыми вводами, чтобы вставлять данные на нужный телефон.данные из views.py в формы Django
Мой models.py:
class Phone(models.Model):
user = models.ForeignKey(User)
num_calls = models.CharField(max_length=20, null=True, blank=True)
time_btwn_calls = models.CharField(max_length=20, null=True, blank=True)
psap = models.CharField(max_length=30, null=True, blank=True)
Мой forms.py:
from django import forms
class phoneForm(forms.Form):
NumberOfCalls = forms.CharField(
min_length = 1,
widget=forms.TextInput({'class': 'form-control'})
)
TimeBetweenCalls = forms.CharField(
widget=forms.TextInput({'class': 'form-control'})
)
PSAP = forms.CharField(
min_length = 1,
widget=forms.TextInput({'class': 'form-control'})
)
def __init__(self, *args, **kwargs):
phone_choices = kwargs.pop('phone_choices')
super(Send2tcu, self).__init__(*args, **kwargs)
self.fields['phone'] = forms.MultipleChoiceField(
required = True,
widget = forms.Select({'class': 'form-control'}),
choices = phone_choices
)
Я просто создать форму с 3 textInputs и MultipleChoiceField, где мне нужно, чтобы отобразить данные из дифферент phone_id.
Мой view.py:
def phone_config(request):
phones = Phone.objects.filter(user_id = request.user.id).values_list('id', flat=True)
if request.method == 'POST':
form = phoneForm(request.POST, phone_choices=phones)
if form.is_valid():
cleaned_data = form.cleaned_data
phone_id = cleaned_data.get('phone')
NumberOfCalls = cleaned_data.get('NumberOfCalls')
TimeBetweenCalls = cleaned_data.get('TimeBetweenCalls')
PSAP = cleaned_data.get('PSAP')
Tcu.objects.filter(id=phone_id).update(
num_calls = NumberOfCalls,
time_btwn_calls = TimeBetweenCalls,
psap = PSAP,
)
return redirect(reverse('gracias'))
else:
form = phoneForm(phone_choices=phones)
return render(request, 'configurer/configurer.html', {'form': form})
def gracias_view(request):
return render(request, 'configurer/gracias.html')
На мой взгляд, в первую очередь, я получаю все phone_id для текущего пользователя. Затем я проверяю, является ли метод post, и я получаю данные из формы, а также передаю в форму разные phone_ids.Then я проверяю, является ли форма действительной, и я создаю объект Phone. После этого назначьте различные параметры выбранному phone_id и сохраните их.
В моем коде есть что-то не в порядке. Я получаю эту ошибку:
TypeError at /configurer/
'int' object is not iterable
return render(request, 'heroconfigurer/heroconfigurer.html', {'form': form})
Не могли бы вы включить трассировку стека? (Вы также можете прочитать о 'ModelForm' в какой-то момент) – Sayse
C: \ Python27 \ lib \ site-packages \ django-1.8.5-py2.7.egg \ django \ forms \ widgets.py в render_options, строка 539 – picador