如何从与方法共享字段的不相关模型返回queryset

2024-04-18 00:38:21 发布

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

我让用户提交一份表格,里面有关于他们家庭的信息,以查看各种计划的家庭总费用。根据“年龄”和家庭“面积”,每个计划对每个人都有不同的费率。人是家庭的外键,但和费率或计划无关。但是,比率模型与个人和家庭模型中的方法共享“年龄”和“面积”字段。你知道吗

我有一个可用的python解决方案(see that view here),但是我正在尝试使用Django querysets,这样我就可以访问模板中所有带点符号的字段。我已经广泛阅读了queryset文档,但是我不知道如何将它们用于我的模型,因为费率和计划模型与个人或家庭无关。任何建议都非常感谢。你知道吗

在尝试求和之前,它将如下所示:

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

型号.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)

Tags: 模型selfdatemodelmodels家庭lengthmax

热门问题