Django: __init__() got an unexpected keyword argument 'instance'

Ich habe die folgende form:

class locationForm(forms.Form):

    existing_regions= forms.ModelChoiceField(queryset=Region.objects.none(), label="Region Name", required=False)
    region_name = forms.CharField()
    location_name = forms.CharField()
    street_address = forms.CharField()
    city = forms.CharField()
    zip_code = forms.CharField()

Sowie die folgende update-Ansicht für dieses Formular:

class UpdateLocation(View):
    template_name = "dash/location_update_form.html"

    def get(self, request, *args, **kwargs):
        loc = kwargs['name']

        try:
            location = Location.objects.get(name=loc)
            form = locationForm(instance=location)

            return render(request, self.template_name, {'form': form,'location': location})

        except (ValueError, ObjectDoesNotExist):
            return redirect(reverse('geofence_manager'))


    def post(self, request, *args, **kwargs):
        loc = self.kwargs['name']
        try:
            location = Location.objects.get(name=loc)
            form = locationForm (request.POST, instance=location)
            if form.is_valid():
                form.save()
            else:
                form = locationForm(request.POST, instance=location)
                return render(request, self.template_name, {'location': location, 'form': form})

        except (ValueError, ObjextDoesNotExist):
            return redirect(reverse('location_manager'))
        return redirect(reverse('location_manager'))

Ich erhalte eine Fehlermeldung in Bezug auf die 'Instanz' key-word-argument verwendet wird. Ich glaube, das hat etwas mit mir zu tun, nicht mit einem Modelform(ich könnte falsch sein). Aber ich will nicht verwenden ein Modelform zu konstruieren, meine form, so ist es eine Möglichkeit, kann ich dies umgehen?

  • Warum sind Sie versuchen zu passieren, ein Modell zu?
  • Ich versuche, ein update anzeigen, das machen die Daten aus einer Instanz, der Sie zugeordnet ist. Gibt es einen besseren Weg, dies zu tun?
  • Andere als die Verwendung eines ModelForm?
  • Ja, andere als ModelForm..
  • Ist dies eine dumme Frage zu stellen? Da bin ich immer den Eindruck haha
  • Diese Aufgabe ist genau das, was ModelForm ist entworfen, um zu tun.
  • Ich denke, meine neue Frage ist dann, wie konvertiere ich dieses Formular ein ModelForm wenn es eine ModelChoiceField queryset. Wenn Sie können, dass, wie die Antwort, ich werde weitermachen und die Antwort akzeptieren.
  • Sie können ModelChoiceField in ModelForm basierte form.

InformationsquelleAutor ApathyBear | 2014-11-28
Schreibe einen Kommentar