python - 模型不是用户特定的
问题描述
我有一个名为 Post 的模型。Post 中的数据会显示给每个用户,而我希望这是特定于用户的。
我是 Django 的新手。这个应用程序是按照 Django for Girls 教程创建的。我后来添加了对用户注册的支持。
模型.py:
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
来自views.py的例子:
from django.shortcuts import render, get_object_or_404
from django.utils import timezone
from .models import Post
from .forms import PostForm
from django.contrib.auth.forms import UserCreationForm
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth import login, authenticate
@login_required
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
模板中的示例(post_list.html):
{% for post in posts %}
<div class="post">
<div class="date">
<p>published: {{ post.published_date }}</p>
</div>
<h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaksbr }}</p>
</div>
{% endfor %}
解决方案
将您的过滤器更改为按用户和发布日期过滤:
posts = Post.objects.filter(
published_date__lte=timezone.now(),
author=request.user
).order_by('published_date')
推荐阅读
- client - Perforce - 如何防止“p4客户端”在未保存模板表单时创建客户端?
- python - 安装 Facebook NeuralProphet 时出现问题
- r - R:按小时过滤:分钟 tibble 数据框列
- snowflake-cloud-data-platform - 是否可以从雪花数据库创建共享?
- javascript - 姜戈 | 动态 URL 中的 JS 变量
- python - ModuleNotFoundError 在 Mac 上的终端中没有命名模块
- python - 检查丢失的拆分 7z 文件
- r - 仅通过 R 中的一个特征来躲避 ggplot2 中箱线图的位置
- c++ - 使用 OpenGL 绘制大量帧后关闭程序时 GPU 使用率跃升至 100%
- python - 拉丁超立方抽样