从数据库中删除不在数组中的元素,从数组中添加不在数据库

时间:2016-10-19 02:51:03

标签: javascript python arrays django python-3.x

我目前正在尝试在Django中创建view,以便从JSON接收和处理POST request数据。我目前在尝试添加/更新数据库中的多个NotificationEmail对象时遇到问题。

我想要做的是检查通过email请求发送的数组内的电子邮件(POST)是否已存储在NoticationEmail对象中{{1该对象的元素。如果它已作为emailAddress对象的emailAddress存在,我想保留它。如果数组中的电子邮件未作为NotificationEmail值存储在任何NotificationEmail对象中,我希望使用此电子邮件添加新的emailAddress对象作为NotificationEmail值。最后,如果emailAddress特定的NotificationEmail(通过POST请求给出)id值未在emailAddress中列出,我想删除它

我目前只是收到了我创建的emails array循环的错误消息,所以我无法运行服务器并试用它。我已经检查过没有for循环,它确实收到了for请求,并且能够在{{1}内将POST个完整的电子邮件添加为array值那个emailAddress的对象。但这不是我希望在我的计划中拥有的行为。

NotificationEmail的代码如下:

id

这是发送Django view的{​​{1}}代码:

@csrf_exempt
def editMachines(request):
       if request.method == 'POST':
                json_data = json.loads(request.body)
                a = Machine.objects.filter(id = json_data['id']).update(name = json_data['machine_name'])
                userid = a.user_id
                b = NotificationEmail.objects.filter(machine_id = json_data['id'].values()
                for i in range (len(json_data['email'])):
                        exists = false
                        count = 0
                        while exists == false or count < len(b):
                                if json_data['email'][i] == b[count]['emailAddress']:
                                        exists = true
                                        count++
                                else:
                                        b[count].delete()
                                        d = NotificationEmail(machine_id = json_data['id'], email = json_data['email'][i].values(), user = userid)
                                        d.save()
                                        count++



                return HttpResponse(status = 200)

我知道JavaScript中的POST request工作正常,因为我可以对其进行一些更改,但我遇到了很多麻烦,试图让 function updateMachine(){ var e = $('#emailAdd').val() var emails = e.split(', ') console.log(emails); var data = {id : machineid, machine_name : $('#name').val(), email : emails}; console.log(data) $.ajax({ type:'POST', url:'/edit/machines/', data: JSON.stringify(data), dataType: 'json', contentType: 'application/json', statusCode : { 200 : function(){ alert("User updated."); window.location = "/users/dashboard/"; } }, async : false }); } 到做我需要的。

如果有人能指导我实现目标,我将非常感激。 :(

提前致谢!

0 个答案:

没有答案