如何填充django模型中的字段

时间:2013-10-20 00:30:18

标签: django django-models django-views

我有一个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

1 个答案:

答案 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',)