django - Django 自定义表单未在 html 模板上的 modelformset_factory 中加载
问题描述
我正在尝试在 modelformset_factory 中使用我的自定义表单,但是当我将 modelformset_factory 中的“form”属性设置为我的自定义表单时,没有显示任何内容。我查看了文档,但找不到导致我的自定义表单无法加载的原因。
这是视图:
@login_required
def post_create(request):
data = dict()
ImageFormset = modelformset_factory(Images,form=ImageForm,extra=4)
if request.method == 'POST':
form = PostForm(request.POST)
formset = ImageFormset(request.POST or None, request.FILES or None)
if form.is_valid():
post = form.save(False)
post.author = request.user
#post.likes = None
post.save()
for f in formset:
try:
i = Images(posts=post, image=f.cleaned_data['image'])
i.save()
except Exception as e:
break
data['form_is_valid'] = True
posts = Post.objects.all()
posts = Post.objects.order_by('-last_edited')
data['posts'] = render_to_string('home/posts/home_post.html',{'posts':posts},request=request)
else:
data['form_is_valid'] = False
else:
form = PostForm
formset = ImageFormset(queryset=Images.objects.none())
context = {
'form':form,
'formset':formset,
}
data['html_form'] = render_to_string('home/posts/post_create.html',context,request=request)
return JsonResponse(data)
这是我的自定义表单:
class ImageForm(forms.ModelForm):
image = forms.FileField(
label='',
widget = forms.FileInput(
attrs={
'style':'display: none;',
'class':'form-control',
'required': False}))
class Meta:
model = Images
fields = ('image', )
这就是我用来加载表单集的内容:
{{ formset }}
提前感谢所有帮助!
解决方案
我自己解决了这个问题,问题是我正在使用 display: none 在我的表单中!我只是删除了现在我的表格是:
class ImageForm(forms.ModelForm):
image = forms.FileField(
label='',
widget = forms.FileInput(
attrs={
'class':'form-control',
'required': False}))
class Meta:
model = Images
fields = ('image', )
推荐阅读
- c# - 如果打开了 CSV/Excel 文件,则使用 MessageBox 通知用户并终止应用程序的其余执行 [C# - WPF 应用程序]
- firebase - 用户注册firebase时如何保存名称?
- django - 在 Docker 容器中从 Jenkins 管道运行 Django 服务器
- c# - 如何在 Windows 窗体应用程序(.Net Framework)的 Visual Studio 中添加 Json 文件
- java - 未收到通过 ovh 地址使用 spring 邮件发送的电子邮件
- reactjs - 使用来自多个组件的数据发送一个 http 请求
- c - 你如何向量化一个循环?
- python - AttributeError:模块“PIL.ImageQt”没有属性“ImageQt”
- javascript - 使用正确的数据获取多个 API
- excel - 关闭 application.screenupdating 之前的工作表选择