我有一个Django项目,其中我有一个Django CreateView
类的子视图。此视图用于将文件上载到服务器,并使用我创建的UploadedFile
模型。 UploadedFile
也需要与项目相关联。
项目ID作为网址的一部分传递:(r'^projects/(?P<proj_key>\d+)/$', UploadedFileCreateView.as_view(), {}, 'upload-new')
问题在于我不确定将此密钥与我的model
相关联的适当位置。是否有一个CreateView
或其中一个祖先的方法,我应该覆盖它创建model
,或者这可以在我的代码中的任何地方以我已经覆盖的方法之一完成(虽然这感觉很hacky )。
此外,我的project
的{{1}}属性被定义为类型UploadedFile
的{{1}}。如何让ForeignKey
与之关联?
这是我的Project
定义:
Project
以下是我的观点定义:
model
答案 0 :(得分:1)
您可以在调用form.save()
的地方执行此操作。只需传递commit=False
,以便在添加项目ID之前不会将其保存到数据库。例如:
self.object = form.save(commit=False)
self.object.project_id = self.kwargs['proj_key']
self.object.save()
只需确保您的表单不包含项目字段。
编辑:要排除该字段,请在表单元类中添加excludes
变量:
class UploadedFileForm(forms.ModelForm):
class Meta:
model = UploadedFile
excludes = ('project',)