Django Queryset ORM问题与字符串

时间:2017-09-04 20:26:25

标签: ajax django orm django-queryset

我尝试将AJAX请求中的字符串与数据库中的数据(名称)进行比较,但我的查询集不起作用:

def create_name(request):
    if request.method == 'POST':
        name = request.POST['name']
        for i in Name.objects.all():
            if i.name != name:
                Name.objects.create(
                    name=name,
                )
                return HttpResponse(status=200)

控制台:

In [3]: for e in Name.objects.all()
    ...:     print(e.name)
Michael
Jack
Chris

比较不起作用,名称将存储在我的数据库中。

名称应该是唯一的。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

根据您当前的逻辑,您为除了当前帖子名称之外的所有其他行创建新实例,您可以尝试get_or_create

def create_name(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        obj, created = Name.objects.get_or_create(name=name)
        if created:
            return HttpResponse(status=201)
    return HttpResponse(status=200)

此处有更多详情get-or-create