[英]Widgets in inlineformset_factory
Hey i managed to make a inlineformset_factory but my widget in the Parent Model are not working although i have specified them in the ModelForm
. 嘿,我设法制作了一个inlineformset_factory,但是尽管在
ModelForm
已指定它们,但父模型中的小部件却无法正常工作。
My forms.py : 我的forms.py:
class PostForm(forms.ModelForm):
post = forms.CharField(widget=CKEditorWidget())
class Meta:
model = Post
fields = ['title', 'author','picture','post','draft','publish']
class PostVocabForm(forms.ModelForm):
class Meta:
model = PostVocab
exclude = ()
PostVocabInlineFormSet = inlineformset_factory(
Post,
PostVocab,
extra=1,
exclude=(),
)
My CKEditorWidget is not working .... 我的CKEditorWidget无法正常工作....
My views.py: 我的views.py:
class PostPostVocabCreate(CreateView):
model = Post
form_class = PostForm
# fields = ['title', 'author', 'picture', 'post', 'draft', 'publish']
def get_redirect_url(self, pk):
return reverse_lazy('blog:post_detail',
kwargs={'slug': pk},
)
def get_context_data(self, **kwargs):
data = super(PostPostVocabCreate, self).get_context_data(**kwargs)
if self.request.POST:
data['postvocabs'] = PostVocabInlineFormSet(self.request.POST)
else:
data['postvocabs'] = PostVocabInlineFormSet()
return data
def form_valid(self, form):
context = self.get_context_data()
postvocabs = context['postvocabs']
with transaction.atomic():
self.object = form.save()
if postvocabs.is_valid():
postvocabs.instance = self.object
postvocabs.save()
return super(PostPostVocabCreate, self).form_valid(form)
I guess that my widget from the Parent model (Post) was overwritten while using a inlineformset_factory... 我猜我使用inlineformset_factory时,来自父模型(帖子)的小部件被覆盖了...
You can set widgets inside of inlineformset_factory. 您可以在inlineformset_factory内部设置小部件。
PostVocabInlineFormSet = inlineformset_factory(
Post,
PostVocab,
extra=1,
exclude=(),
widgets={'post': CKEditorWidget()
)
From Django docs...inlineformset_factory uses modelformset_factory and passes most of its arguments to modelformset_factory. 从Django文档中... inlineformset_factory使用modelformset_factory并将其大部分参数传递给modelformset_factory。 This means you can use the widgets parameter in much the same way as passing it to modelformset_factory.
这意味着您可以像将其传递给modelformset_factory一样使用widgets参数。
AuthorFormSet = modelformset_factory(
... Author, fields=('name', 'title'),
... widgets={'name': Textarea(attrs={'cols': 80, 'rows': 20})})`
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.