如何设计一个列以在django模型中手动添加有效时间段

时间:2015-03-16 06:15:37

标签: python django

我有一个模型,SubscribePlan这里是

class SubscribePlan(models.Model):

    plan = models.CharField(max_length = 200)
    price = models.IntegerField(default=0)
    validity_period = models.DateTimeField()
    number_of_download = models.IntegerField(default = 0)

这里我想以validity_period手动添加有效时间的方式添加admin列。我知道django模型为Date提供了两种不同的数据类型DateField()而另一个是DateTimeField()

如果我没有错,DateTimeField()有两个参数,一个是auto_now,另一个是auto_now_add

更新

但我担心的是,我必须为管理员提供这样一个模型,管理员可以通过管理界面手动设置有效时间段假设24小时或48小时或1天或2天或管理员面板。

那么在这种情况下,应该手动输入有效时间段的模型的data type是什么?或者如果datatypeDateTimeField那么参数应该是什么? 提到我正在使用django 1.5

2 个答案:

答案 0 :(得分:0)

我认为validity_period应该是整数字段(或字符字段),因为它不是Date而只是一个可用于检查时间段的数字,如下所示:

例如,让我们创建一个检查订阅有效性的函数。

for Integer Field

import datetime
def check_validity(start_time ,validity_period):
    if datetime.datetime.now() <= start_time + datetime.timedelta(hours=validy_period):
      return True
    return False

答案 1 :(得分:0)

它还可以取决于在管理界面中使用何种控件(web元素)来输入有效期。如果管理界面具有日期时间选择器或日历(返回DateTime对象),则为了输入有效期,然后在模型中,validity_period字段可以是DateTimeField()或DateField()类型。但是如果管理员提供的输入比如1天或2天,那么它应该是IntegerField或CharField。