У меня проблема с большим количеством многих отношений удаления и добавления.django bulk удалить и добавить многие ко многим отношениям
Это JS, который отправляет pk пользователя для обновления и pk навыков, которые будут добавлены к многим.
function attachskillls(){
var checkedValues = $('input:checkbox:checked').map(function() {
return this.value;
}).get();
console.log(checkedValues)
data = {
'skills' : checkedValues,
'pk' : getUrlVars()["id"]
}
console.log(data)
$.ajax({
type: "POST",
url: "/api/skill/attch/",
data: JSON.stringify(data),
contentType: "application/json",
dataType: "json"
})
данные упакованы как этот
{"skills":["1","2","3"],"pk":"1"}
Это модель навыки будут связаны с
class Resource(models.Model):
title = models.CharField(max_length=10)
preferred_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=30)
employstatus = models.CharField(max_length=20)
employer = models.ForeignKey('Employer')
role = models.ForeignKey('Role')
location = models.ForeignKey('Location')
workphone = models.CharField(max_length=25, blank=True, null=True)
mobile_phone = models.CharField(max_length=15, blank=True, null=True)
email = models.CharField(max_length=15, blank=True, null=True)
notes = models.CharField(max_length=200, blank=True, null=True)
updated_by = models.CharField(max_length=30, blank=True, null=True)
skillset = models.ManyToManyField('ReferenceSkillList')
Это мой апи до сих пор я пытаюсь фильтровать ресурс по рк поэтому у меня есть правильный пользователь, чтобы добавить навыки, чтобы затем очистить все отношения, которые уже могут быть добавлены, а затем добавьте новые отношения.
def Skillattachment(request):
body = json.loads(request.body)
if request.method == "POST":
pk = body['pk']
skills = body
res = Resource.objects.filter(pk=pk)
res.skillset.clear()
res.skillset.add(skills)
else:
search_id = ''
return HttpResponse(json.dumps(body), content_type='application/json')
Есть ли лучший способ сделать то, что я пытаюсь сделать?
В настоящее время я получаю ошибку Объект QuerySet не имеет атрибута 'skillset' , хотя я не уверен, почему? возможно, я неправильно сделал M2M, но я следил за документами
В общем, у вас должны быть точки с запятой в конце инструкций – thanksd