【发布时间】:2011-11-14 09:33:56
【问题描述】:
我有一个全局问题和一个关于信号上下文中的特定问题的问题。 为了解决什么问题,信号调度程序最有用,有点矫枉过正?
我有一个使用外键保存多个模型表单的问题。我认为这是一个信号可以解决它。但我不知道怎么做,因为我不了解信号的范围。
型号
class CV(models.Model):
title = models.CharField(max_length=255)
# And other fields...
class HigherEducation(models.Model):
cv = models.ForeignKey(CV, blank=True, null=True)
institution = models.CharField(max_length=255)
# And other fields...
class ProfessionalExperience(models.Model):
cv = models.ForeignKey(CV, blank=True, null=True)
company_name = models.CharField(max_length=255)
# And other fields...
所有表格都是继承自上述模型的模型表格。最后两个用于模型表单集中。所有这些表单都显示在模板中的一个 html 表单中。
表格
class CVForm(forms.ModelForm):
class Meta:
# All the stuff
class EducationForm(forms.ModelForm):
class Meta:
# All the stuff
class ExperienceForm(forms.ModelForm):
class Meta:
# All the stuff
Education = modelformset_factory(HigherEducation,
form=EducationForm,
max_num=2)
Experience = modelformset_factory(ProfessionalExperience,
form=ExperienceForm,
max_num=1)
在视图中,我需要将EducationForm 和ExperienceForm 与cv 字段以及当前CV 模型的分配ID 一起保存。
我可以通过信号解决这个问题吗?
这个问题很难表述,所以如果有什么不清楚的地方,我会编辑问题。
【问题讨论】:
-
不要认为你需要信号。看看stackoverflow.com/questions/8107751/…
-
有一天我会开始写我的博客文章“Django 中你不应该使用的东西:第 2 部分,信号”。 (第 1 部分是模型继承,顺便说一句)。
-
@DanielRoseman 请分享您的专业知识。我有一个以这种方式运行的应用程序没有问题。我怎样才能做得更好?如果这是最佳解决方案,我可以覆盖 save 和 clean 以使用信号!
-
@DanielRoseman Ha,我一直使用信号和模型继承;它们对于可以在站点的许多不同区域发生操作的大规模应用程序是必不可少的。
django-notification(github.com/jtauber/django-notification) 是一个几乎完全基于 Signals 的应用程序示例,我将其添加到我创建的每个项目中。
标签: django django-signals