无法使用Django中的get方法获取对象值

时间:2012-12-30 22:25:23

标签: python django

我想从模型中获取对象值。尝试get()方法后,我一直无法使它工作。我得到以下错误。我有一个页面向用户显示一个地方的名称,所以如果用户看到他喜欢的地方,他会继续填写表格。在表格中,我想从另一个地方自动获取地点的名称模型,我不希望用户填写该地方的名称。以下是我的代码

       NameError at /welcome/

       global name 'name' is not defined

模型

 class Fin(models.Model):
      user=models.ForeignKey(User)
      name=models.CharField(max_length=100)

      def __unicode__(self):
          return self.user


 class Place(models.Model):
      user=models.ForeignKey(User)
      mall=models.ForeignKey(Fin)
      full_name=models.CharField(max_length=100)
      e_mail=models.EmailField(max_length=100)
      phone_no=models.CharField(max_length=100)
      pub_date=models.DateTimeField()

      def __unicode__(self):
          return self.full_name
      class Meta:
         ordering=['-pub_date']

  class PlaceForm(ModelForm):
       class Meta:
         model=Place
         fields=('full_name','e_mail','phone_no')
         exclude=('user','pub_date','mall')

查看:

   def place_me(request):
       if request.method=="POST":
          form=PlaceForm(request.POST)
          if form.is_valid():
             data=form.cleaned_data
             newbooks=Place(
                 user=request.user,
                 pub_date=datetime.datetime.now(),
                 mall=Fin.objects.get(name),
                 full_name=data['full_name'],
                 e_mail=data['e_mail'],
                 phone_no=data['phone_no'])
             newbooks.save()
             return HttpResponse('Thanks for choosing themall, we will contact you as soon as possible. Go grab a beer :)')
         else:
            return HttpResponse('Some fields are not filled correctly')
     else:
        return render_to_response('buuk.html',{'PlaceForm':PlaceForm},context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:2)

此行mall=Fin.objects.get(name)您尚未在视图name中的任何位置声明place_me变量,因此未定义。

你在.get中传递参数的方式也是错误的,它必须是这样的:

mall=Fin.objects.get(name='any name')
# or you can do
mall=Fin.objects.get(user=request.user)