Django fügt ein zusätzliches Feld zu einer ModelForm hinzu, die von einem Model generiert wurde
Habe ich zu generieren Sie ein FormSet von einem Modell, aber ich brauche zum einfügen von "zusätzlichen Wert" in jeder form.
Speziell, ich habe ein JApplet, das erzeugt einige Marker und Pfade auf ein Bild, und Stelle es auf dem server.
In meinem Modell-Linien werden aus zwei Markern. Aber wenn ich es POSTE, denn ich bin mit der id generiert, die von JApplet und nicht aus der Datenbank, ich weiß nicht aus welche Marken ein Pfad wird zusammengesetzt sein.
So, ich dachte, das einfügen eines "temporary id" auf den Marker auf die form und die richtigen Absprachen in der Ansicht vor dem speichern den Pfad.
Dachte ich über das definieren eines benutzerdefinierten Formulars für die Marker, aber es nicht scheint zu sein, sehr TROCKEN, und ich möchte nicht kam zurück, um diese wenn ich die Marker Modell.
Hier ist das Formular:
class PointForm(forms.ModelForm):
temp_id = forms.IntegerField()
class Meta:
model = Point
def clean(self):
if any(self.errors):
# Don't bother validating the formset unless each form is valid on its own
return
ingresso = self.cleaned_data['ingresso']
ascensore = self.cleaned_data['ascensore']
scala = self.cleaned_data['scala']
if (ingresso and ascensore) or (ingresso and scala) or (ascensore and scala):
raise forms.ValidationError("A stair cannot be a elevator or an access!!!")
return self
def save(commit=True):
# do something with self.cleaned_data['temp_id']
super(PointForm).save(commit=commit)
Und das Modell:
class Point(models.Model):
RFID = models.CharField(max_length=200, blank=True)
x = models.IntegerField()
y = models.IntegerField()
piano = models.ForeignKey(Floor)
ingresso = models.BooleanField()
Den Fehler:
ViewDoesNotExist at /admin/
Could not import buildings.views.getFloors. View does not exist in module buildings.views.
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.4.1
Exception Type: ViewDoesNotExist
Exception Value:
Could not import buildings.views.getFloors. View does not exist in module buildings.views.
Exception Location: /usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py in get_callable, line 101
Der Fehler wird erzeugt, wenn ich versuche, das laden der admin-Seite auf dieser Seite keine Verweise auf alle mit der form.
LÖSUNG FÜR AUSNAHME
Ok, ich werde hier schreiben, wie finden heraus, warum Django war so eine seltsame Sache.
Hier es ist eine richtige Weg, um herauszufinden, was das problem ist.
Die exception geworfen wurde, weil ich vergaß hinzuzufügen forms.py
zu den from django import forms
.
InformationsquelleAutor der Frage Marco Fedele | 2012-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ein Feld hinzufügen, um eine ModelForm. Es sei denn, Sie fügen Sie ein Feld namens temp_id zu Ihr Modell, das Sie nicht zu ändern brauchen diese form, wenn Sie ändern Sie das Modell.
Beispiel (mit einem Modell namens Point):
UPDATE: Vergessen, selbst in def speichern() und modelname geändert zu Punkt
InformationsquelleAutor der Antwort relekang
Follow-up relekang die Antwort, die ich hatte, daran erinnert zu werden, um auch zurück die Letzte Zeile wie gezeigt, so dass das Objekt get_absolute_url() Methode automatisch aufgerufen wird, nach dem abschicken des Formulars:
InformationsquelleAutor der Antwort ZG101