【发布时间】:2017-03-22 17:56:20
【问题描述】:
从事学校项目。我正在尝试仅删除已登录并创建消息的人的消息。我希望其他用户看到它们,但只有创建者可以删除它。我有代码将删除数据库中的所有内容。我研究并发现 Mysecret.objects.filter(id=request.session['user_id']).delete() 应该可以工作,但是当我这样做时,页面不会删除任何内容,只会刷新页面。
我只会发布视图和模型,因为我知道其他一切都有效。我认为它只是我似乎无法确定的格式。
所以我现在得到的是我的消息 ID,即 secret.id,我有创建者 ID,即 secret.creator.id 和会话 ID request.session['user_id']。 我如何比较它们以仅删除该消息
Views.py
from django.shortcuts import render, redirect
from . models import Mysecret
from ..logReg.models import User
# Create your views here.
def index(request):
context = {
"secret": Mysecret.objects.all(),
}
return render(request, 'secretdojo/index.html', context)
def create(request):
secreteid= User.objects.get(id=request.session['user_id'])
Mysecret.objects.create( secret=request.POST['message'], creator=secreteid)
return redirect( 'secretdojo:index')
def removesecret(request):
Mysecret.objects.filter(id=request.session['user_id']).delete()
return redirect( 'secretdojo:index')
def topsecret(request):
context = {
}
return redirect( '/')
model.py
from __future__ import unicode_literals
from django.db import models
from ..logReg.models import User
class Mysecret(models.Model):
secret = models.CharField(max_length =500)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
loguser = models.ManyToManyField(User, related_name='loguser')
creator = models.ForeignKey(User, related_name='creator')
User模型的foreignKey部分:
class User(models.Model):
first_name = models.CharField(max_length = 50)
last_name = models.CharField(max_length = 50)
email = models.CharField(max_length = 100)
password = models.CharField(max_length =100)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
objects = UserManager()
【问题讨论】:
-
请也发布我的秘密模型
-
如果
creator包含创建者,那么您为什么要将用户与id进行比较? -
ta是我的秘密模特
-
因为 id 仅在另一个 def 中,我没有跟进。至少当我尝试它坏了
标签: django python-2.7