你可能有這樣的事情:
class Student(models.Model):
CLASS_CHOICES = (
(u'Yoga','Yoga'),
(u'Spanish', 'Spanish'),
(u'French', 'French'),
(u'Dance', 'Dance'),
)
name = models.CharField(max_length=30)
classname = models.CharField("Class Name",max_length=20, choices = CLASS_CHOICES)
@property
def points(self):
return self.point_set.count()
class Point(models.Model):
creation_datetime = models.DateTimeField(auto_now_add=True)
student = models.ForeignKey('Student')
使用非常簡單:
In [3]: james = Student(classname='Yoga', name='James')
In [4]: james.save()
DEBUG (0.002) INSERT INTO "testapp_student" ("name", "classname") VALUES (James, Yoga); args=['James', 'Yoga']
In [5]: james.points
DEBUG (0.000) SELECT COUNT(*) FROM "testapp_point" WHERE "testapp_point"."student_id" = 1 ; args=(1,)
Out[5]: 0
In [6]: james.point_set.create()
DEBUG (0.001) INSERT INTO "testapp_point" ("creation_datetime", "student_id") VALUES (2012-03-28 09:38:35.593110, 1); args=[u'2012-03-28 09:38:35.593110', 1]
Out[6]: <Point: Point object>
In [7]: james.points
DEBUG (0.001) SELECT COUNT(*) FROM "testapp_point" WHERE "testapp_point"."student_id" = 1 ; args=(1,)
Out[7]: 1
In [8]: james.point_set.create()
DEBUG (0.001) INSERT INTO "testapp_point" ("creation_datetime", "student_id") VALUES (2012-03-28 09:38:41.516848, 1); args=[u'2012-03-28 09:38:41.516848', 1]
Out[8]: <Point: Point object>
In [9]: james.points
DEBUG (0.000) SELECT COUNT(*) FROM "testapp_point" WHERE "testapp_point"."student_id" = 1 ; args=(1,)
Out[9]: 2
我不知道,如果你想跟蹤每類分了。在這種情況下,只需將類名添加到Point模型中即可。
另外,注意Point.creation_datetime將被自動設置爲該模型保存的日期和時間。我剛剛發佈了一個基本模式,您可以根據自己的需要進行定製
另外,我會問是否有'classname'作爲學生的字段是正確的。這意味着學生只能參加一門課。 – 2012-03-28 14:42:18