python - 如何防止用户在 24 小时 django 后更新帖子
问题描述
我想阻止用户在发布日期后 24 小时后更新帖子
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title= models.CharField(max_length=50)
post = models.TextField(max_length=400)
date = models.DateTimeField(auto_now_add=True)
edit = models.DateTimeField(auto_now=True)
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = '__all__'
class PostUpdateView(LoginRequiredMixin,SuccessMessageMixin,UpdateView):
model = Post
form_class = PostForm
success_message = "updated successfully"
template_name = 'store/create.html'
success_url = reverse_lazy('lists')
def form_valid(self,form):
return super().form_valid(form)
我想让用户只能在发布日期的 24 小时之前更新帖子谢谢
解决方案
您可以过滤查询集,以便仅包含Post
在过去 24 小时内编写的 s 的帖子:
from datetime import timedelta
from django.utils.timezone import now
class PostUpdateView(LoginRequiredMixin,SuccessMessageMixin,UpdateView):
model = Post
form_class = PostForm
success_message = "updated successfully"
template_name = 'store/create.html'
success_url = reverse_lazy('lists')
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(
date__gte=now() - timedelta(days=1)
)
def form_valid(self,form):
return super().form_valid(form)
如果更新期限已“过期”,这将返回 HTTP 404 响应。
推荐阅读
- reactjs - 你能动态导入 ReactComponent SVG 吗?
- julia - 如何在不重新启动的情况下分离包
- c++ - Move constructor for a list of Person objects
- r - 如何将 SpatialPointDataFrame 转换为 r 中的普通数据帧?
- node.js - 我如何获得所有命名空间的名称(@kubernetes/client-node)
- python - 有没有办法检测时间序列数据中的阶梯状形状?
- linux - 在 Linux 下,有没有办法从长时间运行的程序中捕获后续的 stdout 和 stderror ?
- in-operator - 编写 SQL 运算符语法的步骤
- react-native - 通过父类中的按钮重置子类和父类的所有状态 - React Native
- java - Java泛型方法:创建必要类型的实体