繁体   English   中英

如何通过 python django 从数据库中删除特殊数据

[英]How to delete special data from database by python django

例如,我在数据库中有一个名为 BlackList 的表,如下所示:

在此处输入图像描述

表的 model 为:

class BlackList(models.Model):
    list = models.CharField(max_length=1000, null=True, blank=True)

我尝试做的是:

if request.method == "POST":
    username = request.POST.get('username')  # Get username input first
    password = request.POST.get('password')
    user = authenticate(request, username=username, password=password)
    BL = BlackList.objects.values_list('list', flat=True) # Read all data into array
    if username in BL:  # Check if the username is in blacklist
       # Remove this username from the BlackList table

所以我的问题是如何删除特殊的特殊数据,例如,如果'aaa'尝试登录,那么'aaa'将从黑名单表中删除或删除。

.delete方法。 IE。 尝试这个:

if BlackList.filter(list=username).exists(): 
    BlackList.objects.get(list=username).delete() 

代替:

BL = BlackList.objects.values_list('list', flat=True) # Read all data into array 
if username in BL: # Check if the username is in blacklist 
    # Remove this username from the BlackList table

您可以在https://docs.djangoproject.com/en/3.0/topics/db/queries/#deleting-objectshttps://docs.djangoproject.com/en/3.0/ref/models/上阅读更多相关信息查询集/#exists

您可以将filter()first()结合使用来获取现有用户名:

blacklist = Blacklist.objects.filter(username=username).first()

(如果没有匹配,这将返回None 。如果你使用get() ,你会得到DoesNotExist错误——这不是首选。)

之后,您可以将其删除:

blacklist.delete()

实现您的目标需要 2 个查询(获取和删除)。

另一种方法是在不获取 object 的情况下将其删除:

Blacklist.objects.filter(username=username).delete()

该语句将仅使用一个等于DELETE FROM... WHERE username='username'查询执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM