我想填充我的模型以包含IP地址,但是我无法根据需要设置ip,它只返回IP地址的“此字段是必需的”。
class SignUp(models.Model):
....
ip = models.IPAddressField()
def my_view(request):
form = SignUpForm(request.POST, ip_addr=get_client_ip(request))
class SignUpForm(ModelForm):
class Meta:
model = SignUp
def __init__(self, *args, **kwargs):
self.ip_addr = kwargs.pop('ip_addr', None)
super(SignUpForm, self).__init__(*args, **kwargs)
def clean_ip(self):
return self.ip_addr
答案 0 :(得分:3)
您实际上没有为ip表单字段设置初始值,这意味着它是空的。尝试:
def __init__(self, *args, **kwargs):
super(SignUpForm, self).__init__(*args, **kwargs)
self.fields['ip'].initial = kwargs.pop('ip_addr', None)
The clean_ip
method is for validation upon提交表单,仅在调用form.is_valid()
后调用。它应检查该字段的值是否为有效的IP
答案 1 :(得分:0)
我认为你不应该在这里使用clean_ip
。无论如何你不是在清理它。在您的视图中使用initial或覆盖save
方法。