Django:更新模型后附加某些值

时间:2015-12-08 16:23:32

标签: python django

我想知道如何才能做到这一点。

我目前正在做这个创建和修改客户端模型的Django项目,如下所示:

class Client(models.Model):
    name = models.CharField(max_length=300)
    birth_date = models.DateTimeField('birth date')
    gender = models.CharField(max_length=1, choices=GENDER, null=True)
    phone_number = models.CharField(max_length=13, null=True)
    email = models.EmailField(max_length=254, null=True)
    medical_condition = models.CharField(max_length=300, null=True)
    experience = models.CharField(max_length=3, choices=EXPERIENCE, blank=True)
    next_class = models.DateTimeField('next class')

现在,一切都很好。我目前正在使用通用表单视图来创建和更新学生,所以没关系。但是,我打算做一个View,在那里我可以看到所有上课的学生的财务报告,包括付款。我怎么会这样?每次我改变它的值时,我都可以尝试以某种方式将next_class附加到某种字典中,但我觉得它根本没有效率。

我试过看我怎么做到这一点;我主要考虑使用Django的管理员历史应用程序并将其集成到我的实际网页,但我发现Simple History似乎非常好。不过,我觉得它并不完全符合我想要的查询。

提前致谢,如果它以任何方式模糊,我道歉。如果有必要,我可以使用更多代码更新我的帖子,只是不想再提出这个问题了。

1 个答案:

答案 0 :(得分:0)

我认为你的模型是错误的。您似乎需要为学生所需的课程设置单独的相关模型。它可以很简单:

class Class(models.Model):
    client = models.ForeignKey('Client')
    date = models.DateTimeField()

因此,您可以向Class模型添加新行,而不是更改Client模型中的字段。然后,在两个日期之间查询客户端的所有类将非常简单:

classes_taken = my_client.class_set.filter(date_range=[start_date, end_date])

其中my_client是客户的实例,start_dateend_date是相关日期。