Форум сайта python.su
Привет всем!
Я только начинаю учить Django и у меня возник вопрос.
У меня есть модели с описанием структуры БД.
Есть страничка из которой делаются запрос на использование БД (запись или чтение данных из БД)
Ну и конечно необходимо проверить данные передаваемые из этой странички (html).
Я почитал документы и мануалы и пришел к выводу (надеюсь неверному), что для того, чтобы проверить данные необходимо отдельно создать файл forms.py (можно и не отдельно, но для простоты) и там прописать собственно правила проверки.
Так вот, а нельзя ли как-нибудь без этих форм сделать проверку по моделям БД?
Для меня не понятно, зачем писать два раза почти одно и тоже…. т.е. хотелось бы что-то типа иметь такое:
class Admins(models.Model):
тра та та
def new_user(request):
form = Admins(request.POST)
if form.is_valid()
Офлайн
Не совсем ясно что вы подразумеваете под “проверкой”.
Конечно объект модели можно создать просто из запроса:
obj = MyModel(foo=request.POST["foo"], bar=request.POST["bar"])
obj.save()
obj = MyModel.objects.get(foo=request.POST["foo"])
class MyModelForm(forms.Form):
class Meta:
model = MyModel
Офлайн
Спасибо за ответ.
Я как раз и имел ввиду валидацию входящих данных.
Вот пример модели
class Admins(models.Model):
login = models.EmailField()
password = models.CharField(max_length=20)
company = models.CharField(max_length=20)
def __unicode__(self):
return '%s %s %s' % (self.login, self.password, self.company)
def new_user(request):
if request.method == "POST":
form = Admins(request.POST)
if form.is_valid():
p = Admins(login=request.POST.__getitem__('login'), password=request.POST.__getitem__('password'), company=request.POST.__getitem__('company'))
p.save();
return render_to_response('reg.html')
request.POST.__getitem__('login'),
request.POST.__getitem__('password'),
request.POST.__getitem__('company')
Daevaorn
DaevaornВот этот подход мне не понятен. Вас не затруднит объяснить что и как :) Если времени нету, то дайте ссылку я сам почитаю….
Формы нужны для валидации входных данных. Форма может автоматически создаваться по модели:
Код:
class MyModelForm(forms.Form):
class Meta:
model = MyModel
ну вариантов много и их использование на вашем усмотрении.
Офлайн
Дополнение
т.е. тут понятно, что
class MyModelForm(forms.Form):
class Meta:
model = MyModel
class Meta:
model = MyModel
Офлайн
avekir
Вы немного не в том месте документацию читаете. Вот то что вам нужно:
http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#topics-forms-modelforms
PS: Там маленькая неточность в моём коде: class MyModelForm(forms.ModelForm) надо
Офлайн
спасибо, помогло
Офлайн