我是Django的新手,只是嘗試使用ModelForms提交表單來創建新事件並將其保存到數據庫。Django model.save()不寫入數據庫
我想插入到三個表中的行:位置,事件(它有一個location_id FK)和EventSchedule(它作爲event_id FK)。
這裏是保存表單的方法。當它被調用時,返回任何錯誤,但新的行不插入到數據庫:
addNewEvent()(在views.py)
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
從django.forms進口的ModelForm,從模型導入事件,地點形成 ,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')
任何幫助深表感謝。
謝謝
彼得
編輯:
我甚至不能保存模型,更別說的ModelForm(即使我在其他地方成功地做這件事)。我添加了以下代碼以將用戶與事件相關聯。沒有錯誤,但它沒有添加一行數據庫:
new_user_event = UserEvent(user=user,
event=new_event,
datetime_created=datetime.datetime.now())
new_user_event.save()
任何想法?
編輯2:
截圖new_user_event的:http://imgur.com/JUauG
編輯3:
這是我如何實例化ModelForms:
event_form = EventForm(request.POST or None)
location_form = LocationForm(request.POST or None)
event_sched_form = EventScheduleForm(request.POST or None)
如果它讓你感覺好一點,這個問題/答案幫助我們調試了Jenkins服務器上的類似情況。所以你的回答至少幫助了一個人! – keithhackbarth