質問編集履歴

1

間違えて投稿ボタンを押してしまいました。

2019/01/07 16:07

投稿

mickey
mickey

スコア27

test CHANGED
File without changes
test CHANGED
@@ -2,8 +2,50 @@
2
2
 
3
3
  class Post(models.Model):
4
4
 
5
- title = models.CharField(max_length=255, null=True, blank=True)
5
+ title = models.CharField(max_length=255)
6
6
 
7
+ description = models.TextField()
8
+
9
+ created_at = models.DateTimeField(default=timezone.now)
10
+
11
+ is_expired = models.BooleanField(default=False)
12
+
7
- description = models.TextField(null=True, blank=True)
13
+ expired_at = models.DateTimeField(null=True, blank=True)
14
+
15
+ ```例えば上記のようなブログ記事用のモデルがあり、投稿するとcreated_atと同時にexpired_atに
16
+
17
+ ```ここに言語を入力
18
+
19
+ timezone.now() + timezone.timedelta(days=7)
20
+
21
+ ```が挿入されるようにviews.pyに記述されているとします。
22
+
23
+
24
+
25
+ ここで
26
+
27
+ ```ここに言語を入力
28
+
29
+ timezone.now() > post.expired_at
30
+
31
+ ```つまり現在の日時がexpired_atを過ぎるとis_expiredが自動的にTrueに変更されるようにしたいのですが、どういう選択肢があるでしょうか?
32
+
33
+
34
+
35
+ ```ここに言語を入力
36
+
37
+ @property
38
+
39
+ def is_expired(self):
40
+
41
+ if timezone.now() > self.expired_at:
42
+
43
+ return True
44
+
45
+ return False
8
46
 
9
47
  ```
48
+
49
+ のような解決法ではなくtimezone.now()がexpired_atを超えるとis_expiredをTrueにしたいです。
50
+
51
+ [こちら](https://stackoverflow.com/questions/29903134/django-how-to-automatically-change-a-fields-value-at-the-time-mentioned-in-the)にCeleryを使った例が出ていますが、いまいち理解できませんでした。