【问题标题】:Notes should be showed only for the author注释应仅显示给作者
【发布时间】:2021-09-04 06:42:43
【问题描述】:

在我的笔记项目中,我想这样做,笔记应该只显示给对象的作者。我试图解决这个问题 3 天。但是,我无法解决这个问题。请帮忙!提前致谢

view.py

 @login_required(login_url='login')
def index(request):
    tasks = Task.objects.all()
    if request.method=='POST':
        form = TaskForm(request.POST)
        if form.is_valid():
            obj = form.save()
            obj.owner = request.user
            obj.save()
            return redirect('/')

    form =  TaskForm()
    user = request
    context = {
    'tasks' : tasks,
    'form':form,
    'obj':obj
    
    }
    return render(request, 'list.html',context)

models.py

class Task(models.Model):
    title = models.CharField(max_length=200)
    completed = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)


    def __str__(self):
        return self.title
    

【问题讨论】:

    标签: django django-models django-views django-forms django-templates


    【解决方案1】:

    您的Task 将需要一个ForeignKey 到用户模型,以跟踪谁创建了任务,所以:

    from django.conf import settings
    
    class Task(models.Model):
        title = models.CharField(max_length=200)
        completed = models.BooleanField(default=False)
        created = models.DateTimeField(auto_now_add=True)
        owner = models.ForeignKey(
            settings.AUTH_USER_MODEL,
            on_delete=models.CASCADE
        )

    我认为在这种情况下,最好重新创建为Task 模型创建表的迁移文件。

    现在我们有了Tasks 的所有者,我们可以过滤:

    @login_required(login_url='login')
    def index(request):
        tasks = Task.objects.filter(owner=request.user)
        if request.method=='POST':
            form = TaskForm(request.POST, request.FILES)
            if form.is_valid():
                form.instance.owner = request.user
                obj = form.save()
                return redirect('/')
        else:
            form =  TaskForm()
        context = {
            'tasks' : tasks,
            'form': form
        }
        return render(request, 'list.html', context)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 1970-01-01
      相关资源
      最近更新 更多