創建flatpage時,我希望用戶從預定義的列表中選擇一個模板。爲了保持Flatpage
模式不變,我更喜歡ChoiceField
在ModelChoiceField
(後者提供模板的PK,但我需要爲TEMPLATE_NAME字段名):字段和base_fields - Django
class NewFlatpageForm(FlatpageForm):
template_name = forms.ChoiceField(choices = [])
def __init__(self, *args, **kwargs):
self.base_fields['template_name'].choices = ProjectTemplate.objects.values_list('path', 'name')
super(NewFlatpageForm, self).__init__(*args, **kwargs)
我重寫__init__
或者Django的在填充的選擇服務器啓動,然後不更新列表。
我沒有任何管理員經驗,但在不使用管理員時,我使用fields
屬性做了類似的操作。但在這種情況下,我得到一個異常,告訴fields
不是表單的屬性。 __dict__
告訴我有一個base_fields
屬性並使用它的作品。那麼,爲什麼在這裏使用base_fields,爲什麼fields
不存在,最後我在做些什麼hacky?
謝謝Daniel .. – shanyu 2010-01-26 16:51:27