簡體   English   中英

Django 使 object 每 24 小時僅創建一次

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM