Django-Modell.save() nicht schreiben Datenbank
Ich bin neu in Django und versuche gerade ein Formular Absenden mit ModelForms ein neues event anlegen und in der Datenbank speichern.
Ich versuche, Zeilen einzufügen, die in drei Tabellen: Ort, Veranstaltung (location_id FK) und EventSchedule (die als event_id FK).
Hier ist die Methode, speichert die Formen. Wenn es heißt, es werden keine Fehler zurückgegeben, doch die neuen Zeilen werden nicht in die Datenbank eingefügt.:
addNewEvent() (in views.py)
def addNewEvent(self, event_form, location_form, event_sched_form, latitude, longitude):
new_event = event_form.save(commit=False)
new_location = location_form.save(commit=False)
new_event_sched = event_sched_form.save(commit=False)
# set any necessary values and save forms
new_location.latitude = latitude
new_location.longitude = longitude
new_location.save()
new_event.flagged = False
new_event.location = new_location
new_event.save()
new_event_sched.event = new_event
new_event_sched.save()
models.py
class Location(models.Model):
name = models.CharField(max_length=200)
#address = models.CharField(max_length=200)
city = models.CharField(max_length=200)
state_code = models.CharField(max_length=100)
zip = models.CharField(max_length=100, blank=True)
country = models.CharField(max_length=100)
latitude = models.DecimalField(max_digits=9, decimal_places=6)
longitude = models.DecimalField(max_digits=9, decimal_places=6)
class Meta:
db_table = 'location'
class Event(models.Model):
CATEGORIES = (
('KID', 'Kids'),
('FAM', 'Family'),
('NIT', 'Nightlife'),
('OUT', 'Outdoors'),
('ART', 'Arts'),
('MSC', 'Music'),
('SPT', 'Sports'),
('SAL', 'Sale'),
('EDU', 'Educational'),
('POL', 'Political'),
('FOD', 'Food'),
('OTH', 'Other')
)
location = models.ForeignKey(Location)
name = models.CharField(max_length=200)
description = models.CharField(max_length=200)
category = models.CharField(max_length=20, choices=CATEGORIES)
age_req = models.IntegerField(null=True)
cost_per_person = models.DecimalField(max_digits=5, decimal_places=2, null=True)
flagged = models.BooleanField()
users = models.ManyToManyField(User, through='UserEvent')
class Meta:
db_table = 'event'
class EventSchedule(models.Model):
event = models.ForeignKey(Event)
start_date_time = models.DateTimeField()
end_date_time = models.DateTimeField()
class Meta:
db_table = 'event_schedule'
forms.py
vom django.Formulare importieren ModelForm, Formen
von Modellen importieren, Event, Location, EventSchedule
class EventForm(ModelForm):
class Meta:
model = Event
fields = ('name','description','category','age_req','cost_per_person')
class LocationForm(ModelForm):
class Meta:
model = Location
fields = ('name','city','state_code','zip','country')
class EventScheduleForm(ModelForm):
class Meta:
model = EventSchedule
fields = ('start_date_time', 'end_date_time')
Jede Hilfe wird sehr geschätzt.
Danke,
Peter
EDIT:
Kann ich auch nicht speichern, ein Modell, geschweige denn eine ModelForm (obwohl, ich mache es erfolgreich auch in anderen Orten). Ich habe den folgenden code zum verknüpfen eines Benutzers mit einem Ereignis. Keine Fehler, aber es doesn ' T fügen Sie eine Zeile in die Datenbank:
new_user_event = UserEvent(user=user,
event=new_event,
datetime_created=datetime.datetime.now())
new_user_event.save()
Irgendwelche Ideen?
EDIT 2:
Screenshot von new_user_event: http://imgur.com/JUauG
EDIT 3:
Dies ist, wie ich bin Instanziierung der ModelForms:
event_form = EventForm(request.POST or None)
location_form = LocationForm(request.POST or None)
event_sched_form = EventScheduleForm(request.POST or None)
InformationsquelleAutor stank345 | 2012-06-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wow, ich bin so ein idiot. Ich war das löschen der Zeilen in den Tabellen vor, ich könnte tatsächlich die Ereignisse aufgrund einiger code, besiedelten die Datenbank mit dummy-Daten.
Kann ich löschen, diese Frage oder sollte es Leben auf wie ein Beweis für meine Dummheit?
Fehler sind Teil des Prozesses ist zu lernen, zu
InformationsquelleAutor stank345
https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method
commit=false
ist die UrsacheInformationsquelleAutor akonsu
Du nicht den post der wichtigste Teil hier IHMO : wie sind Ihre Formen instanziert ? Eine ModelForm kann verwendet werden, um sowohl eine neue Instanz erstellen, oder einen vorhandenen Eintrag aktualisieren. Wenn Sie vorhandene Instanzen zu Ihren Formen, dann ist dein code nur aktualisieren.
event_form = EventForm(request.POST or None)
InformationsquelleAutor bruno desthuilliers