我在同一个应用程序中的两个模型之间有一个ManyToMany关系。这看起来如下:
class Event(models.Model):
eventID = models.CharField(deafult = random_eventID)
signal = models.ManyToManyField(Signal)
....
....
现在,在我的表单中(使用ModelForm)每次刷新页面时,我的 eventID 字段已经填充了 eventID (因为它获得了一个新的每次刷新页面时,random_eventID 。 这样,当我在我的表单中选择添加一个新信号时(我希望能够在创建事件时添加信号)...它会转到不同的视图。我保存了该活动,当我返回“活动”页面时, eventID 再次更改。我希望在添加大量不同内容后返回“事件”页面时,用户已经填写/选择的所有数据都存在。
我想到的解决方案:
1 - 我无法更改我的模型,以便包含另一列并在转到另一个页面之前保存事件。之后将其取回。
2 - 使用会话我保存所有字段中已存在的所有数据,稍后将其检索回来。(这样,HTTP不再是无状态的,但它符合我的目的。)
3 - Ajax是否有助于进行任何更新(我不理解)
我尝试使用session并且遇到了这个愚蠢的错误,我无法解决。
views.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 ..如何从我的字段中获取值?
此外,还有更好的方法来完成除会话之外的所需结果。
任何帮助都会有很大的帮助!