【发布时间】:2011-07-09 13:29:50
【问题描述】:
- 我正在保存一个项目。
- 它有一个 Practitioner 内联模型。
- 在 Practitioner 模型的 def 保存中,我正在运行自定义代码以将另一条记录插入另一个名为 Simple Auth 的表中。
我的想法是,如果我像在 views.py 中所做的那样将项目实例传递给从业者,那么 def save 将能够引用 self 的项目。
所以我的views.py 看起来像这样:
def form_valid(self, form):
practitioner_form = context['practitioner_form']
if practitioner_form.is_valid():
self.object = form.save(commit=False)
self.object.slug = slugify(self.object.title)
self.object.save()
practitioner_form.instance = self.object
practitioner_form.save()
return HttpResponseRedirect(reverse('profile_detail', kwargs={'username':user.username}))
else:
return self.render_to_response(self.get_context_data(form=form))
我的 Practitioner def save 是这样的:
def save(self, *args, **kwargs):
if SimpleAuth.objects.filter(project=self.project,name=self.practitioner_name).exists():
simpleauth = SimpleAuth.objects.get(project=self.project,name=self.practitioner_name)
simpleauth.project = self.project
simpleauth.name = self.practitioner_name
simpleauth.save()
else:
SimpleAuth.objects.create(project = self.project, name = self.practitioner_name)
super(Practitioner, self).save(*args, **kwargs)
出于某种原因 simpleauth.project = self.project 似乎没有任何价值。为什么我不能这样获取项目ID?
只是一个注释。如果我通过管理员创建我的项目,那么一切正常。在我的表单上,这不起作用。
【问题讨论】:
标签: django django-models django-forms django-views