Как изменить тип поля в GAE Django?
Форум — Web-development
Всем доброго дня и с праздником. У меня имеется следующий вопрос: Имеется следующая модель в джанге, поставляемой в GAE: файл: models.py
from google.appengine.ext import db
class commonProperty (db.Model):
title = db.StringProperty (verbose_name = "Entry title", multiline = False)
slug = db.StringProperty (verbose_name = "Entry title in URL string (slug)", multiline = False)
parentId = db.IntegerProperty (verbose_name = "Parent category ID")
# остальные элементы модели поскипаны
class fEntry (commonProperty):
body = db.TextProperty (verbose_name = "Message body")
whenChanged = db.DateTimeProperty (verbose_name = "When message was changed last time", auto_now = True)
# остальные элементы модели поскипаны
def someFetchMethod (self, someParam)
return 'param:%s'%someParam
from google.appengine.ext.db import djangoforms
from myproj.main.models import fEntry
from django import forms
# Здесь делаем я хочу сделать форму на основании модели
class entryForm(djangoforms.ModelForm):
# и таки делаю (то есть, форма успешно отрисовывается в шаблоне и обрабатывается с помощью метода fEntry.save() во views.py)
class Meta:
model = fEntry
exclude = ['slug', ] # скипаем поле slug, отрисовывается только title, parentId и body
# а вот здесь я хочу изменить тип поля parentId с TextInput (которое по-умолчнию создается Meta`ой) на HiddenForm
def __init__(self, *args, **kwargs):
super(entryForm, self).__init__(*args, **kwargs)
self.fileds['parentId'].widget = HiddenInput()
TypeError at /myproj/thread/9/vopros-1/
__init__() takes at least 2 arguments (1 given)
Request Method: GET
Request URL: http://127.0.0.1:8080/myproj/thread/9/vopros-1/
Exception Type: TypeError
Exception Value: __init__() takes at least 2 arguments (1 given)
Exception Location: ~/gae/myproj/myproj/main/forms.py in __init__, line 19
Traceback (most recent call last):
File "~/google_appengine/lib/django/django/core/handlers/base.py" in get_response
77. response = callback(request, *callback_args, **callback_kwargs)
File "~/gae/pycomm/myproj/main/views.py" in showThread
34. 'responseBox' : entryForm()
File "~/gae/pycomm/myproj/main/forms.py" in __init__
21. self.fileds['parentId'].widget = HiddenInput()
TypeError at /myproj/thread/9/vopros-1/
__init__() takes at least 2 arguments (1 given)
Django: 0.96.4
ОС: Linux Debian Lenny
Что я делаю не так? И как сделать «так»?
То есть, понятно, что можно руками вписать это самое <input type=«hidden» name=«parentId».../>, но, все-таки очень хочется разобраться в том, как выставлять нужный виджет элементам формы.