在尝试验证数据时,如何向窗体中添加多个字段?

2024-04-19 06:39:55 发布

您现在位置:Python中文网/ 问答频道 /正文

要使IP地址包含在表单中,最好的方法是什么?\ u valid。让我从一些代码示例开始。你知道吗

你知道吗网址.py你知道吗

from django.conf.urls.defaults import *
from testpost.views import TestPost

urlpatterns = patterns('',
    (r'^djtestforms/', TestPost),
)

你知道吗型号.py你知道吗

from django.db import models

class TestPostModel(models.Model):
    name = models.CharField(max_length=100)
    comment = models.CharField(max_length=100)
    ip_address = models.IPAddressField()

    def __unicode__(self):
        return self.model

    @models.permalink
    def get_absolute_url(self):
        return ('TestPostModel', [self.id])

你知道吗表单.py你知道吗

from django import forms
from models import TestPostModel

class TestPostForm(forms.ModelForm):
    class Meta:
        model = TestPostModel

from forms import TestPostForm
from models import TestPostModel
from django.http import HttpResponse

def TestPost(request):
    f = TestPostForm(request.POST)
    if f.is_valid():
        object = f.save()
        return HttpResponse("That worked")
    else:
        return HttpResponse("That didn't work")

我的问题是当我尝试执行“f=TestPostForm”时(请求.POST)“将IP地址添加到TestPostForm的最佳方法是什么。我在想一些类似于“f=TestPostForm”的东西(请求.POST,ip地址=请求.META[“REMOTE_ADDR”])“但这不起作用。有什么建议吗?你知道吗


Tags: djangofrompyimportselfreturnmodelsdef
2条回答

commit=False保存

form=TestPostForm(data=request.POST)
if form.is_valid():
  object=form.save(commit=False)
  object.ip_address=request.META['REMOTE_ADDR']
  object.save()

您可能需要在模型中设置blank=True,或在窗体中设置required=False,以便窗体进行验证

@czarchic-你的回答给了我一个很好的提示,告诉我该怎么做。我改变了模型,使blank=True表示ip地址,然后做了一个

f = TestPostForm(request.POST)
f.data['ip_address']=request.META['REMOTE_ADDR']

在那之后就是你的工作了。谢谢。你知道吗

相关问题 更多 >