フォームが表示される前に、Django モデル インスタンスを追加するために自動生成されたフォームのフィールドの初期値を設定するにはどうすればよいですか? Django 1.3.1 を使用しています。
私のモデルは次のとおりです。
class Foo(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
現在の管理フォームは特別なものではありません
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
管理ページを使用して Foo の新しいインスタンスを追加すると、タイトルと説明用のフィールドが空の素敵なフォームが表示されます。私が望むのは、関数を呼び出して取得したテンプレートで説明フィールドを設定することです。
そこに到達するための私の現在の最善の試みはこれです:
def get_default_content():
return 'this is a template for a Foo description'
class FooAdminForm(django.forms.ModelForm):
class Meta:
model = Foo
def __init__(self, *args, **kwargs):
kwargs['initial'].update({'description': get_default_content()})
super(FooAdminForm, self).__init__(self, *args, **kwargs)
class FooAdmin(admin.ModelAdmin):
ordering = ('title',)
form = FooAdminForm
しかし、これを試してみると、次の Django エラーが発生します。
AttributeError at /admin/bar/foo/add/
'FooForm' object has no attribute 'get'
Request Method: GET
Request URL: http://localhost:8000/admin/bar/foo/add/
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value: 'FooForm' object has no attribute 'get'
Exception Location: /www/django-site/venv/lib/python2.6/site-packages/django/forms/widgets.py in value_from_datadict, line 178
ここで何が問題なのか、それを機能させるために何をすべきかわかりません。このエラーについて私が奇妙に感じているのは (まったく表示されないという事実を除けば)、私のコードには FooForm がまったくないということですか?