Как добавить несколько полей в форму при попытке проверить данные? - PullRequest
0 голосов
/ 16 декабря 2009

Как лучше всего включить 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

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 (request.POST)", как лучше всего добавить IP-адрес в TestPostForm. Я думал о чем-то вроде "f = TestPostForm (request.POST, ip_address = request.META [" REMOTE_ADDR "])", но это не работает. Есть предложения?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

@ czarchaic - Ваш ответ дал мне хороший совет о том, что делать. Я изменил модель, так что blank = True для ip_address, а затем сделал

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

После этого is_valid работал. Спасибо.

0 голосов
/ 16 декабря 2009

Сохранить с 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 в форме для проверки формы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...