首页 > 解决方案 > 模型上的日期验证 - 时间/日期冲突

问题描述

我正在学习 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-我不确定应该在哪里编写函数来检查电影日期是否与另一个电影日期发生冲突。(它应该在我的模型中还是在我的视图中?)

我试图在 Stackoverflow 上查看 Django 文档和其他答案,但我仍然卡住了。

标签: djangodjango-models

解决方案


您可以像这样设置当前时间

from django.utils import timezone


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

如果我明白你的意思

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


推荐阅读