database - Django model.save() 不写入数据库

标签 database django save django-forms

我是 Django 的新手,只是尝试使用 ModelForms 提交表单以创建新事件并将其保存到数据库。

我正在尝试将行插入到三个表中:Location、Event(具有 location_id FK)和 EventSchedule(作为 event_id FK)。

这是保存表格的方法。调用时,不会返回任何错误,但不会将新行插入到数据库中。:

addNewEvent()(在 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()

模型.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'

表单.py

从 django.forms 导入 ModelForm,表单 从模型导入事件、位置、事件时间表

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)

最佳答案

哇,我真是个白痴。由于某些代码用虚拟数据填充了数据库,因此我在实际显示事件之前删除了表中的行。

我可以删除这个问题还是它应该作为我愚蠢的证明而存在?

关于database - Django model.save() 不写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11251255/

相关文章:

android - 如何在 Android 4.1.2 上将文件保存在外部存储公共(public)目录文档中

ios - 即使应用程序关闭,也可以在我的应用程序中保存游戏关卡吗?

php - 表的条件sql查询

iphone - 对数据库存储音频文件的建议?

python - 保存对象时 Django mod_wsgi PicklingError

python - 在测试之间自动删除 MEDIA_ROOT

database - SQLite3 : database not being saved

java - 设计工具的架构

database - 如何从网站收集数据

python - Django MySQL 如何停止外键约束?