简体   繁体   English

从Django中的外键设置会话变量:需要字段名称而不是主键

[英]Setting session variable from foreign key in Django: Need field name instead of primary key

I think this should be simple, but I can't seem to find the answer I'm looking for. 我认为这应该很简单,但是我似乎找不到要寻找的答案。 I'm setting a session variable based on a foreign key/ drop down in the template. 我正在基于外键设置会话变量/模板中的下拉菜单。 The session variable saves as the primary key instead of the field name. 会话变量另存为主键,而不是字段名。 How do I change this? 我该如何改变?

models: 楷模:

class Verbs(models.Model):
    verb = models.CharField(max_length=20)

    def __unicode__(self):
        return self.verb

class MyVerbs(models.Model):
    verb = models.ForeignKey(Verbs)

forms: 形式:

class MyVerbForm(forms.ModelForm):

class Meta: 
    model = MyVerbs

views: 意见:

def TestSession(request):
request.session['myverb'] = ''
if request.method == 'POST':
    form = MyVerbForm(request.POST)
    if form.is_valid():
        myvariable = form.cleaned_data['verb']

    #myvariable = request.POST.get('verb', '')
    request.session['myverb'] = myvariable
    return HttpResponseRedirect('/')
else:
    form = MyVerbForm(request.POST)
    context = {'form': form}
    return render_to_response('test.html', context, context_instance=RequestContext(request))

def Session(request): myvariable = request.session['myverb'] context = {'myvariable': myvariable} return render_to_response('base.html', context, context_instance=RequestContext(request)) def Session(request):myvariable = request.session ['myverb'] context = {'myvariable':myvariable} return render_to_response('base.html',context,context_instance = RequestContext(request))

您应该调用form.is_valid()然后从form.cleaned_data获取值,而不是request.POST

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM