如何定义面试的评分表模型?

时间:2018-09-27 13:04:51

标签: django django-models

enter image description here

原谅糟糕的图纸。

注释:

  • 我-采访
  • R1,R2,R3,R4-回合
  • RT-评分表
  • A0,A1,A2,A4-评分表下的外观(文本字段)。

型号:

class Interview(models.Model):
    date = ............

class Round(models.Model):
    interview = models.ForeignKey(Interview)

class RatingSheet(models.Model):
    name = ............

class Aspects(models.Model):
    sheet= models.ForeignKey(RatingSheet)

我需要为每次采访填写一份评分表。该工作表将为每个回合的每个方面保留等级(​​1-10)。

我尝试过什么:

我已经考虑过为N轮采访动态创建表格,并接受下拉菜单。 我通过request.POST收集所有信息。并创建一个像这样的字典:

rating_interview_1 = {'interview_pk':
         {
                     'Round1': {'ASP1': 5, 'ASP2':10},
                     'Round2': {'ASP1': 5, 'ASP2':10},
                     'Round3': {'ASP1': 5, 'ASP2':9},
            }
                      }

然后以某种方式将其保存到数据库。我认为这可能很难编辑或维护。我可以就正确的设计方法获得一些建议吗?

1 个答案:

答案 0 :(得分:0)

我自己解决了。进行了2周的思考。这太复杂了,无法回答。 但是我学到的一件事是……总有一种组织模型来存储数据的方法。将来,其他明智的检索将是真正的痛苦。

解决方案:

我们需要更多模型。

class InterviewRatingSheet(models.Model):
    name = models.CharField(max_length=200, default='MySheet')
    interview = models.ForeignKey(Interview, null=True)
    round_name = models.OneToOneField(Round, null=True)

    def __str__(self):  # __unicode__ on Python 2
        return self.name

class RatingAspect(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField(null=True, default='', blank=True)
    interview_rating_sheet = models.ForeignKey(InterviewRatingSheet)
    points = models.PositiveIntegerField(default=0)

    def __str__(self):  # __unicode__ on Python 2
        return self.name

因此,对于“ 圆形”,将只有一个“ InterviewRatingSheet ”,并且每个工作表的“ RatingAspect ”与“ 方面”。

您可以在此链接中看到整个代码: https://github.com/arindam31/django-interview-manager