Ich habe eine ‚Farm‘ -Modell und eine entsprechende Modelform wie folgt:Django Modelform Update bestimmte Felder
class FarmForm(ModelForm):
class Meta:
model = Farm
fields = ['farm_name','address','farm_size', 'latitude', 'longitude']
ich ein neues Farm Objekt durch meine Client-Anwendung speichern kann (es erfordert, dass ich füllen in allen in meiner ModelForm genannten Bereichen).
Ich möchte eine andere Ansicht haben, in der ich eine vorhandene Farm aktualisieren kann, wo der Benutzer vielleicht nur die Felder einfügen/aktualisieren kann, die er/sie ändern möchte. Ich habe versucht, so etwas wie folgende von nur einer der Feldwerte durch Postbote vorbei, aber es gibt mir Form_not_valid Fehler:
@api_view(['POST'])
def updateFarm(request, farmId):
farm = Farm.objects.get(id=farmId)
form = FarmForm(instance=farm, data=request.POST)
if form.is_valid():
farm = form.save()
farm = Farm.objects.filter(id=farm.id)
serializer = FarmSerializer(farm, many=True)
return JSONResponse(serializer.data)
#return Response("Data saved")
else:
return Response("Form not valid, insert correct fields.")
Wie kann ich meine Ansicht erstellen, die nur Benutzer-Update lassen diese Felder denkt er relevant sind? Meine URL: url(r'^farms/update/(?P<farmId>\d\d)/$', views.updateFarm),
Sie möchten das Formular is_valid aufrufen, aber wie wird Ihr Formular wissen, welche Felder der Benutzer ändern möchte und nur diese validieren? – fips