在学校项目上工作。我试图仅通过登录并创建它的人删除邮件。我希望其他用户看到它们,但只有创建者可以删除它。我有代码将删除数据库中的所有内容。我研究并发现Mysecret.objects.filter(id = request.session ['user_id'])。delete()应该可以工作,但是当我这样做时,页面不会删除任何东西只是刷新页面。
我只会发布视图和模型,因为我知道其他所有工作。我认为它只是我似乎无法确定的格式。
所以我现在所拥有的是我的消息ID是secret.id,我的创建者ID是secret.creator.id,会话ID是request.session ['user_id']。 我如何比较它们只删除tmessage
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()
答案 0 :(得分:1)
你应该这样:
Select part, variant, type
from table1,table2
where table1.part = table2.part;
答案 1 :(得分:1)
建议:不要保留自己的用户模型,但请使用Django's Authentication system
就您的代码而言,我相信您"创建"代码也不起作用,这是因为这一行Mysecret.objects.filter(id=request.session['user_id'])
。因为这不会返回任何东西。您正在使用模型Mysecret进行搜索,但使用的用户ID不会返回任何内容。相反,你需要:
Mysecret.objects.filter(creator=request.session['user_id'])
如果您使用Danjgo的Auth,您将拥有request.user
并且可以执行以下操作:
Mysecret.objects.filter(creator=request.user)
另一个注意事项: Mysecret模型有loguser
字段的原因是什么?你的情况似乎多余,
答案 2 :(得分:0)
删除创建者创建的所有邮件
Function formatIP(item As String, displayType As String) As String
'displayTypes CIDR,MASK,RANGE
'Set theRegEx = CreateObject("VBScript.RegExp")
Dim theRegEx As New RegExp
With theRegEx
.Global = True
.MultiLine = False
.IgnoreCase = False
.Pattern = "(?<address>\d{1,3}(?:\.\d{1,3}){2}\.(?<FromSeg>\d{1,3}))(?:(?:\/|\s+\/\s+)(?<CIDR>\d{1,2})|(?:-|\s+to\s+)(?<ToSeg>\d{1,3}(?![\d\.]))|(?:-|\s*to\s+)(?<ToIP>\d{1,3}(?:\.\d{1,3}){3})|\s+(?<Mask>25\d(?:\.\d{1,3}){3})|\s*)?"
.Execute (item)
End With
'Set MyMatches = theRegEx.Execute(item)
Debug.Print "SubMatches.Count: " & MyMatches.item(0).SubMatches.Count
If MyMatches.Count <> 0 Then
With MyMatches
For myMatchCt = 0 To .Count - 1
Debug.Print "myMatchCt: " & myMatchCt
For subMtCt = 0 To .item(subMtCt).SubMatches.Count - 1
Debug.Print "subMtCt: " & subMtCt
Debug.Print ("," & .item(myMatchCt).SubMatches.item(subMtCt))
Next
Next
End With
Else
Debug.Print "No Matches"
End If
formatIP = ""
End Function
按ID删除邮件,仅由其创建者
删除例如:假设secret_id是消息的id
Mysecret.objects.filter(creator=request.session['user_id']).delete()
答案 3 :(得分:0)
答案如下。
mainid = Mysecret.objects.get(id=id)
userid =User.objects.get(id=request.session['user_id'])
if mainid.creator != userid:
return False
mainid.delete()
<td>{{ dog.created_at }}</td>
{% if dog.creator.id == request.session.user_id %}
<td><form action="{% url 'secretdojo:remove' id=dog.id %}">{% csrf_token %}<input class="btn btn-default" type="submit" value="Remove"></form></td>
{% endif %}
</tr>
{% endfor %}
</table>
答案 4 :(得分:0)
要通过 ID 从会话购物车中删除特定产品:
` def DeleteProductView(request,id):
cart = request.session.get('cart')
product = Product.objects.get(id=id)
var = str(product.id)
if request.method == 'POST':
request.session.modified = True
cart.pop(var)`