1

我的 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()

视图和模板:

在克隆的情况下,我通过 do 获取事件event_idto clone from Event.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从地图中删除,并将其加载到表单中,当我在模板上显示表单时,它下面有一个验证错误......但是用户刚刚打开了页面...... .

4

1 回答 1

1

你可以这样做:

form = EventForm(initial=map)
于 2012-08-19T00:00:19.740 回答