原谅糟糕的图纸。
型号:
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},
}
}
然后以某种方式将其保存到数据库。我认为这可能很难编辑或维护。我可以就正确的设计方法获得一些建议吗?
答案 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