2010-12-10 52 views
0

我试图自动填充在我的形式 我这样试图在Django自动popolate表单字段构成

 #forms.py 
     class registerForm(forms.ModelForm): 
      class Meta: 
       model=register 
       fields = ('Availability', 'Status')#'latitude','longitude', 

      def save(self,ip_address, *args, **kwargs): 
       g = GeoIP() 
       lat, lon = g.lat_lon(ip_address) 
       user_location = super(registerForm, self).save(commit=False) 
       user_location.latitude = lat 
       user_location.longitude = lon 
       user_location.save(*args, **kwargs) 

做这件事情的纬度和经度领域,我的观点有这个东西

#views.py 
    def status_set(request): 
      if request.method == "POST": 
     ip_address=request.META['REMOTE_ADDR'] 
      rform = registerForm(data = request.POST) 
      if rform.is_valid(): 
       register = rform.save(commit=False) 
       register.user=request.user 
       register.save(ip_address) 
       return render_to_response('home.html') 
     else: 
      rform = registerForm() 
     return render_to_response('status_set.html',{'rform':rform}) 

但是当我尝试提交它说的形式“保存()至少需要2个非关键字参数(1给出)”的错误是在这里“register = rform.save(commit=False)"我EM无法弄清楚 任何帮助将是非常感谢他们使用django 1.1.1和GeoIP的

回答

0

看看你save定义您registerForm - 你添加ipaddress作为参数,但在你看来你是不是传递它如果你想保持通话save()你现在的样子,使您的函数定义中的ipaddress=None或您可以处理的其他一些默认值。

+0

红豆杉请给我一个关于如何将视图中的参数传递给表单的例子 – MajorGeek 2010-12-10 20:06:16

+0

当你调用rform.save()时,传入ip地址 - 像这样:'reg = rform.save(ipaddress = request.META。 GET('REMOTE_ADDR'),commit = False)' – girasquid 2010-12-10 20:28:03

+0

仍然是同样的错误我可以得到任何关于传递参数和** kwargs或任何关于如何将参数传递给窗体的教程或文档 – MajorGeek 2010-12-10 20:39:32