gpt4 book ai didi

django - Django DateTimeField 中独特的月/年组合

转载 作者:行者123 更新时间:2023-12-02 21:22:49 25 4
gpt4 key购买 nike

我有一个 DateTimeField 并希望按月/年限制它,即每月只能输入一个条目。

目前,我使用两个额外的字段(/)与unique_together = ("month", "year") ,但肯定有更好的解决方案。

class someModel(models.Model):
datetime = models.DateTimeField(unique=True)
...

class Meta:
ordering = ['datetime']

最佳答案

除了现在的方式之外,您无法真正“本地”执行此操作,因为在定义模型时您正在定义数据库级验证,并且说 MySQL 不支持带有 YEAR 的 DATETIME 字段+MONTH 唯一约束。

但是,您可以做的是在字段中添加您自己的验证器,但这将需要在保存/更新模型实例时产生额外的开销。我自己之前在日期时间/时间戳值方面遇到过麻烦,通常年+月唯一约束解决方案是迄今为止最有效/透明的,即使它会导致额外的存储(但这是最便宜的元素,对吧?)

但如果您确实决定使用单字段唯一约束,请参阅 https://docs.djangoproject.com/en/dev/ref/validators/ - 您需要在字段中添加一个验证器,以检查是否存在具有该年+月组合的其他对象。请注意,这在大型系统上效率非常低,因为 MySQL 也不支持 DATETIME 字段上的年/月索引 - 该值将通过全表扫描中的函数传递并随后进行过滤:(

关于django - Django DateTimeField 中独特的月/年组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26341618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com