我有Book
表,只有一个归档value
包含加密的title
和descriptions
本书。
现在我正在执行管理功能,管理员可以查看或编辑用户提交的标题和说明。
到目前为止,我开始使用自定义admin/users/book/5/
在ModelForm
中获取值字段
在这里,我只想使用value
向用户提交extra_context
,但您知道该字段中没有显示任何内容。
models.py
class Book(models.Model):
values = models.CharField(max_length=800, null=True, blank=True)
forms.py
class BookForm(forms.ModelForm):
extra_field = forms.CharField()
def save(self, commit=True):
value = self.cleaned_data.get('value', None)
class Meta:
Model = Book
admin.py
class BookAdmin(admin.ModelAdmin):
def add_view(self, request, form_url='', extra_context=None):
return super(BookAdmin, self).add_view(request)
def change_view(self, request, object_id, form_url='',):
bookInfo = Book.objects.get(pk=object_id)
pprint.pprint(bookInfo.values)
extra_context = {}
extra_context['value'] = bookInfo.values
pprint.pprint(extra_context)
return super(BookAdmin, self).change_view(request, object_id, form_url, extra_context=extra_context)
form = BookForm
fieldsets = (
(None, {
'fields': ('value',),
}),
)
admin.site.register(Book, BookAdmin)
这里他们提到changelist_view。我也试过了,但我不知道如何在book_change_form.html
答案 0 :(得分:0)
所以这个词是 Providing initial values for custom fields based on instance data
在您的forms.py中包含以下代码,然后它将起作用....
def __init__(self, *args, **kwargs):
instance = kwargs.get('instance')
if instance:
pprint.pprint(instance.values)
self.base_fields['values'].initial = instance.values
forms.ModelForm.__init__(self, *args, **kwargs)