![](/img/trans.png)
[英]How to limit each user to only allowed to post once every 24 hours in Django Class Based Create View
[英]Django make the object create only once per 24 hours
這是我的 Django model:
class mymodel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
deleted_at = models.DateTimeField(null=True, blank=True)
如何使 object 每 24 小時僅創建一次? 我知道可以使用unique_for_date
但無法理解https://docs.djangoproject.com/en/4.1/ref/models/fields/#unique-for-date
另外,如果用戶想要每 24 小時創建一次以上,我想顯示一個錯誤。
unique_for_date
僅適用於 ModelForm。 此外,如果此字段列在excluded
中,它將跳過驗證。 根據文檔
這是在 model 驗證期間由 Model.validate_unique() 強制執行的,但不是在數據庫級別。 如果任何 unique_for_date 約束涉及不屬於 ModelForm 的字段(例如,如果其中一個字段在 exclude 中列出或具有 editable=False),則 Model.validate_unique() 將跳過對該特定約束的驗證。
我建議覆蓋您的 model 的保存方法
class MyModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
deleted_at = models.DateTimeField(null=True, blank=True)
def save(self, *args, **kwargs):
try:
date_from = datetime.datetime.now() - datetime.timedelta(days=1)
MyModel.objects.get(created_at__gte=date_from)
# raise some save error
except MyModel.DoesNotExist:
super(MyModel,self).save(*args,**kwargs)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.