Django表格

2024-09-28 05:28:18 发布

您现在位置:Python中文网/ 问答频道 /正文

这是在django1.5上。在

我有一个看似简单的问题,但实际上却很复杂。所以我在一个求职网站上工作,我有两个模型:

  • 申请人
  • 技巧

这两个模型是通过一个贯穿模型applicationskillscore来关联的。所以看起来像:

class Applicant(models.Model):
    name = models.CharField(max_length=255)
    skills = models.ManyToManyField(Skills, through='ApplicantSkillScore')

class Skill(models.Model):
    name = models.CharField(max_length=255)

class ApplicantSkillScore(models.Model):
    applicant = models.ForeignKey(Applicant)
    skill = models.ForeignKey(Skill)
    score = models.FloatField(_("Score"))

现在我要做的是呈现一个基于表格的表格来输入申请者的技能分数,如下所示:

^{pr2}$

其理念是:

  1. 申请者和技能是从各自的模型中动态导出的。(如果技能是硬编码的字段,这将更容易10000倍。)
  2. 如果有申请人的技能分数,则显示一个预先填充的表格。否则,显示一个空表单。

在Django中有没有一种优雅的方式来呈现这种形式?在


Tags: name模型modelmodels技能lengthmaxskill
1条回答
网友
1楼 · 发布于 2024-09-28 05:28:18

我认为应该使用内联表单集。在

然后,您可以将所有申请者及其相关技能分数呈现为一个表单集。在

  1. The applicants and skills are derived dynamically, from the respective models. (If the skills were hard-coded fields, this would be 10000x easier.)

基本上,您只需要创建一个父模型对象及其关联的子对象(applicationskillscore)。这就是inline formsets是解决方案的地方,因为它们允许您有一个视图来创建/修改您的申请者模型以及用外键链接到它的其他模型。在

  1. If the applicant's skill score is present, display a prepopulated form. Otherwise, display an empty form.

这只是在模板中呈现表单的问题。使用内联表单集,它将像普通表单一样显示数据(如果有的话),或者只是一个空表单。你想怎么表现就看你了。在

我用这个例子开始:inline formset with class based view example

相关问题 更多 >

    热门问题