我想知道如何才能做到这一点。
我目前正在做这个创建和修改客户端模型的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似乎非常好。不过,我觉得它并不完全符合我想要的查询。
提前致谢,如果它以任何方式模糊,我道歉。如果有必要,我可以使用更多代码更新我的帖子,只是不想再提出这个问题了。
答案 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_date
和end_date
是相关日期。