2009-12-16 7 views
0

IP 주소를 양식 is_valid에 포함시키는 가장 좋은 방법은 무엇입니까? 먼저 몇 가지 코드 예제부터 시작하겠습니다.데이터의 유효성을 검사 할 때 양식에 여러 필드를 추가하려면 어떻게해야합니까?

urls.py

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

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

model.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]) 

forms.py

나는 "F = TestPostForm (request.POST을 할 때
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") 

내 질문은) "IP 주소를 TestPostForm에 추가하는 가장 좋은 방법은 무엇입니까? 나는 "f = TestPostForm (request.POST, ip_address = request.META ["REMOTE_ADDR "])의 줄을 따라 생각하고 있었지만 작동하지 않습니다. 어떤 제안? Your'e 대답은 나에게 좋은 힌트를 준 - 양식

답변

-1

저장 당신은 아마 형태로 모델의 blank=True 또는 required=False을 설정해야합니다 무엇을 해야할지. ip_address에 대해 blank = True가되도록 모델을 변경하여

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

is_valid가 작동 한 후에 모델을 변경했습니다. 감사.

+0

이 질문에 답하는 이유는 양식을 유효하게 만드는 것이기 때문에이 코드는 전혀 도움이되지 않습니다. 아래 답변은 올바른 답변입니다. – boatcoder

2

@czarchaic을 확인하기 위해 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() 

관련 문제