如何从使用方法

时间:2017-05-24 01:09:01

标签: python django

我让用户提交一份表格,其中包含有关其家庭的信息,以查看各种计划的家庭总费率。根据“年龄”和“家庭”区域,每个计划对每个人的费率都不同。人是外国人的外键,但他们与费率或计划无关。但是,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)

0 个答案:

没有答案