python - 如何将 form_class 数据传递到在 Django 中创建的模型对象中?
问题描述
我想在 Django 中创建文章表单。下面的代码得到 Error FileModel.post" must be a "Article" instance
。因为我想创建来自 forgnekey 的多个文件相关文章实例。我提交表单数据时需要传递示例post=form.instances
,但我不明白如何传递FileModel.objects.create(post=self.form_class, file=f)
?如果有任何帮助,我将不胜感激。
视图.py
class CreateView(CreateView):
form_class = FileForm
template_name = 'create.html'
success_url = '/'
success_message = "New story has been created successfully"
def form_valid(self, form):
form.instance.author = self.request.user
for f in self.request.FILES.getlist('file'):
FileModel.objects.create(post=self.form_class, file=f) # Error is here!
return super().form_valid(form)
解决方案
您需要传递表单创建的实例,而不仅仅是表单类。例如:
FileModel.objects.create(post=form.instance, file=f)
更新:由于文章尚未保存,当您尝试将其附加到 FileModel 对象时,它不会让您。
尝试这样的事情:
def form_valid(self, form):
post = form.save(commit=False)
post.author = self.request.user
post.save()
for f in self.request.FILES.getlist('file'):
FileModel.objects.create(post=post, file=f)
return redirect('/')
推荐阅读
- dax - 一个月内重复
- java - Spring Rest API TransactionSystemException
- javascript - firebase 的调整大小扩展完成后获取下载网址
- java - 使用java插入数据时pdf文件中的数据覆盖
- feathersjs - 需要在feathersjs中添加多于usernameField
- c# - .NET Core 3 中的 DLLExport 用于非托管 C/C++ 代码
- progressive-web-apps - 获取 TypeError:无法在渐进式 Web 应用程序中获取
- php - 如何在 PHP 应用程序中使用 Symfony 路由组件从 .yaml 和通过注解注册路由
- c# - 从 C# 中以系统日志为前缀的行中提取 JSON
- python - 如何在嵌套数组中查找模式?