Сохранение формы в базе данных - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь заполнить стандартную форму. Только сохранение модели не работает. Затем он переходит на страницу ошибки по умолчанию при сохранении ().

Ошибка говорит:

'WohnungHinzufuegenForm' object has no attribute 'save'

В чем может быть ошибка?

urls.py:

    path('user/ereignis/wohnungHinzufuegen', views.wohnungHinzufuegen,name="wohnungHinzufuegen"),

models.py:

class Wohnungseinheiten(models.Model):
    wohnungsnummer = models.AutoField(primary_key=True)

    strasseHausnummer = models.CharField("strasseHausnummer",max_length=100)
    adresszusatz = models.CharField("adresszusatz",max_length=100)
    plz = models.CharField("plz",max_length=100,blank=True)
    ort = models.CharField("ort",max_length=100)

views.py:

@login_required
def wohnungHinzufuegen(request):
    if request.method == 'POST':
        form4 = WohnungHinzufuegenForm(request.POST)
        if form4.is_valid():
            #Here he definitely goes in and fills in the test variables: 
            tmpadresszusatz=form4.cleaned_data['strasseHausnummer'] #contains values
            tmpadresszusatz=form4.cleaned_data['adresszusatz'] #contains values
            try:
                form4.save() #this doesn't save -> it shows the default error page then
            except Exception as e:
                return HttpResponse(str("done."+e)) #returns never
            return HttpResponse(str("done."+tmpLogin +"|"+tmpPassword))
            return redirect('user/ereignis')

forms.py:

class WohnungHinzufuegenForm(forms.Form): 
    strasseHausnummer = forms.CharField(required=True,max_length=100)
    adresszusatz = forms.CharField(required=False,max_length=100)
    plz = forms.CharField(required=True,max_length=100)
    ort = forms.CharField(required=False,max_length=100)
    class Meta:
        model = Wohnungseinheiten
        fields = ('strasseHausnummer','adresszusatz','plz','ort')

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Только на основе форм «ModelForm» есть встроенный метод сохранения. Для форм, основанных на «Форма», необходимо создать метод сохранения.

0 голосов
/ 05 июня 2019
Класс

Form не реализует метод save(). Вам нужен ModelForm класс.

class WohnungHinzufuegenForm(forms.ModelForm): # forms.ModelForm instead of forms.Form
    strasseHausnummer = forms.CharField(required=True,max_length=100)
    adresszusatz = forms.CharField(required=False,max_length=100)
    plz = forms.CharField(required=True,max_length=100)
    ort = forms.CharField(required=False,max_length=100)

    class Meta:
        model = Wohnungseinheiten
        fields = ('strasseHausnummer','adresszusatz','plz','ort')

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...