模型上的日期验证-时间/日期冲突

时间:2018-12-21 08:24:04

标签: django django-models

我正在学习Django,并且正在使用它构建电影院预订系统。 在此电影院预订中,只有一个电影院。每个电影院只有一个房间。在这个房间里,每小时放映一部电影。 这家电影院只有一名员工和数名顾客。我将员工设置为超级用户,以便他可以从“ / admin”中添加/删除电影。

因此,我只有两个模型。首先,帐户(又名客户)。其次,电影。 我想仅在以下情况下允许创建新电影: -电影的创建日期已经过去(不能创建过去的时间)。 -由于只有一个房间,因此只有在该特定日期(日,年,年,时,分,秒)内还没有电影时,才能创建电影。

我的电影模特是:

class Movie(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(null=True)
    price = IntegerField(default=10)
    movie_duration = models.IntegerField(default=1),
    when_movie_created = models.DateTimeField()
    when_movie_displayed = models.DateTimeField()
    who_created = models.ForeignKey(User, on_delete=models.CASCADE, null=True, editable=False)

我想要的结果如下:如果员工(又名超级用户)添加了新电影,但他过去添加了电影,或者他添加了与已经存在的电影发生冲突的日期,则他应该无法为此。

我不确定如何验证此输入。 因为:

1-我不太确定如何在模型中设置当前日期

2-我不确定应该在哪里编写函数以检查电影日期是否与另一个电影日期冲突。 (是在我的模型中还是在我的视图中?)

我试图查看Django文档和有关Stackoverflow的其他答案,但是我仍然很困惑。

1 个答案:

答案 0 :(得分:1)

您可以这样设置当前时间

from django.utils import timezone


when_movie_created = models.DateTimeField(default=timezone.localtime)

如果我能很好地理解你的意思

2:您可以在视图和模型之间创建接口以创建新的电影事件,在模型中,您可以编写函数以对数据库进行操作