我让用户提交一份表格,其中包含有关其家庭的信息,以查看各种计划的家庭总费率。根据“年龄”和“家庭”区域,每个计划对每个人的费率都不同。人是外国人的外键,但他们与费率或计划无关。但是,Rate模型使用Person和Household模型中的方法共享'age'和'area'字段。
我有一个有效的python解决方案(see that view here),但我正在尝试使用Django查询集,因此我可以访问模板中带点符号的所有字段。我已经广泛阅读了查询集文档,但我无法弄清楚如何将它们与我的模型一起使用,因为Rate和Plan模型与Person或Household无关。非常感谢任何建议。
在尝试总结之前,它看起来像这样:
Example Household has 3 Persons:
Plan A:
Rates:
Person 1: $1
Person 2: $2
Person 3: $3
Plan B:
Rates:
Person 1: $2
Person 2: $4
Person 3: $6
但我需要模板来返回这样的家庭总和:
Total for Household:
Plan A: $6
Plan B: $12
models.py
class Plan(models.Model):
name = models.CharField(max_length=255)
company = models.CharField(max_length=255)
plan_details = models.CharField(max_length=255)
class Rate(models.Model):
plan = models.ForeignKey(Plan)
age = models.CharField(max_length=6)
area = models.ForeignKey(Area)
premium = models.DecimalField(max_digits=7, decimal_places=2)
class Household(models.Model):
last_name = models.CharField(max_length=50)
county = models.ForeignKey(County)
effective_date = models.CharField(max_length=25, choices=EFFECTIVE, default='2017-08-01')
def area(self):
return Area.objects.filter(county=self.county).first()
class Person(models.Model):
birthdate = models.DateField(max_length=25)
household = models.ForeignKey(Household)
@property
def _age(self):
"""
Returns the age from the date of birth
"""
effective_string = self.household.effective_date
effective_date_obj = datetime.datetime.strptime(effective_string, "%Y-%m-%d")
return effective_date_obj.year - self.birthdate.year - ((effective_date_obj.month, effective_date_obj.day) < (self.birthdate.month, self.birthdate.day))
class Area(models.Model):
number = models.CharField(max_length=25)
class County(models.Model):
name = models.CharField(max_length=25)
area = models.ForeignKey(Area)