0

我在同一个应用程序中的两个模型之间存在多对多关系。如下所示:

class Event(models.Model):
    eventID = models.CharField(deafult = random_eventID)
    signal = models.ManyToManyField(Signal)
    ....
    ....

现在,在我的表单(使用 ModelForm)中,每次刷新页面时,我的eventID字段都已经填充了eventID(因为每次刷新页面时它都会获得一个新的random_eventID)。这样,当我在我的表单中选择添加新信号时(我希望能够在创建事件时添加信号)......它会进入不同的视图。我保存了事件,当我返回事件页面时,事件 ID再次更改。我希望在添加许多不同的内容后返回到事件页面时,用户已经在表单中填写/选择的所有数据都存在。

我想到的解决方案:

1 - 我无法更改我的模型以包含另一列并在转到另一个页面之前保存事件并稍后将其取回。

2 - 使用会话我保存所有字段中已经存在的所有数据,然后再将其检索回来..(这种方式 HTTP 不再是无状态的,但它符合我的目的。)

3 - Ajax 是否会帮助进行任何更新(我不明白它会)

我使用会话进行了尝试,遇到了这个愚蠢的错误,我无法解决。

视图.py

def create(request):
    if request.POST:
        form = EventForm(request.POST)
        form .save()
        del request.session['event_id']
        return HttpResponseRedirect('/Event')
    else:
        event_session = request.session.get('event_id')
        if event_session is not None:
            form = EiEventForm(initial={'eventID' : event_session}
        else:
            form = EventForm()
            request.session['event_id'] = form('eventID').value()
    args = {}
    args.update(csrf(request))
    args['form'] = form
    return render_to_response('event.html', args)

有了上述,调试后我没有得到 eventID 字段中的当前值。我也尝试了其他一些方法,但没有成功。

request.GET.get('eventID') 返回 None ..如何从我的字段中获取值?

此外,除了会话之外,是否有更好的方法来完成所需的结果。

任何帮助都会有很大帮助!

4

0 回答 0