django + get model,最初没有在表单中验证

时间:2012-08-18 20:58:28

标签: python django django-forms

我的dJango应用程序中有一个名为event的模型。我希望用户能够克隆event以创建一个新的,而无需从头开始 - 并非所有信息都会随时更改。

当我这样做时,因为它加载了克隆事件页面,我在某些必填字段上收到验证错误,因为我没有复制现有event的所有信息,只有部分信息田野。未复制和需要的字段在页面首次加载时抛出验证错误(但用户尚未提交表单)。有没有办法让初始验证不会发生?

[编辑]

Model:
    class Event(models.Model):
        class Meta:
            db_table = 'event'

        type = models.ForeignKey(EventType, default="0")
        title = models.CharField(max_length=150, default='Event')
        location = models.TextField()
        description = models.TextField(max_length=1050)
        start_time = models.DateTimeField()
        end_time = models.DateTimeField()

查看和模板:

在克隆的情况下,我通过event_idEvent.objects.get(id=event_id)获取要克隆的事件。获得对象后,我通过执行以下操作为form设置以下值:

map = {
    'type': event.type.name,
    'title': event.title,
    'location': event.location,
    'description': event.description,
    'start_time': event.start_time,
    'end_time': event.end_time
}

form = EventForm(map)

form对象中的值与模型中的值相同。在克隆的情况下,假设我从地图中删除title并将其加载到表单中,当我在模板上显示表单时,它下面有一个验证错误...但是用户只是打开页面......

1 个答案:

答案 0 :(得分:1)

你可以这样做:

form = EventForm(initial=map)