我正在尝试根据我的Django站点上的模型或数据库表分配会话变量。换句话说,在第一次使用时,我希望用户从下拉列表中选择一个县,并将该县或pk的名称写入会话变量。从那里开始,在点击模板之前,该数据被拉入context_processor。现在,我得到的错误是
(1062,“密钥'county_id'的重复条目'1'”)
我不确定它是否正在尝试将多个条目写入数据库,但我并不像其他数据那样想要任何数据库。我只想存储一个会话变量。我确信我的问题是我的观点,但我似乎无法做到正确。万一你无法分辨,我对此很陌生。
我定义了一个model.py来访问另一个县的表。
class NonUserCounty(models.Mdel):
county = models.ForeignKey(County)
def __unicode__(self):
return self.county
我已经定义了一个form.py
class NonUserCountyForm(forms.ModelForm):
class Meta:
model = NonUserCounty
和views.py
def Welcome(request):
if request.method == 'POST':
form = NonUserCountyForm(request.POST)
if form.is_valid():
mycounty = form.cleaned_data['county']
request.session['mycounty'] = mycounty
form.save()
return HttpResponseRedirect('/')
else:
form = NonUserCountyForm()
context = {'form': form}
return render_to_response('welcome.html', context, context_instance=RequestContext(request))
上下文处理器
def mynews(request):
now = datetime.now()
if not request.user.is_authenticated():
if not "mycounty" in request.GET:
MyNews = News
county = County
else:
return HttpResponseRedirect('/welcome/')
else:
user = request.user.get_profile()
county = user.county.all()
MyNews = News
我的模板....
<form action="" method="post">
{% csrf_token %}
{{ form }}
<p><input type="submit" alt="register" value="Sign Up" /></p>
答案 0 :(得分:1)
如果您不想在数据库中保存任何内容,为什么要调用form.save()
?只需删除该行即可。