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

Posted

技术标签:

【中文标题】在 Django 中从外键设置会话变量:需要字段名而不是主键【英文标题】:Setting session variable from foreign key in Django: Need field name instead of primary key 【发布时间】:2014-01-17 18:30:50 【问题描述】:

我认为这应该很简单,但我似乎无法找到我正在寻找的答案。我正在根据模板中的外键/下拉设置会话变量。会话变量保存为主键而不是字段名。我该如何改变?

型号:

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

    def __unicode__(self):
        return self.verb

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

表格:

class MyVerbForm(forms.ModelForm):

class Meta: 
    model = MyVerbs

观看次数:

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 会话(请求): myvariable = request.session['myverb'] 上下文 = 'myvariable': myvariable return render_to_response('base.html', context, context_instance=RequestContext(request))

【问题讨论】:

【参考方案1】:

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

【讨论】:

页面现在加载,但是当我提交时,我现在收到以下错误: is not JSON serializable 好吧,有些代码你没有显示,因为你没有在你显示的代码中对 json 做任何事情。 这几乎是我网站的总和。它实际上只是一个简单的网站,我正在努力学习如何做我需要做的事情。顺便说一句,我很新。再次感谢! @丹尼尔-罗斯曼 我将原件修改为当前版本。

以上是关于在 Django 中从外键设置会话变量:需要字段名而不是主键的主要内容,如果未能解决你的问题,请参考以下文章

Django从外键获取数据

在 Laravel 6 中从外键获取数据

Laravel中从一个表到另一个表中的同一字段的多个外键

django关系类型字段

Django 关系类型字段

在Django中从一个应用程序到另一个应用程序的外键