Есть такая вьюха:
def set_task_parents(request):
if request.method == 'POST' and request.is_ajax():
if 'task_id' in request.POST:
gantt, created = Gantt.objects.get_or_create(task__pk = request.POST['task_id']) #тут ошибку выдает
if not created:
gantt.predecessors.clear()
mdict = {'task_id':gantt.task_id}
if 'parent_task' in request.POST:
pt = Task.objects.only('id', 'task_type').filter(pk__in = request.POST.getlist('parent_task'))
for p in pt:
gantt.predecessors.add(p)
x = {}
for i, p in enumerate(pt):
x.update({i:{'id':p.id, 'task_type':p.task_type.name.lower(),'task_status':p.status.name.lower()}})
mdict.update({'parents':x})
else:
mdict.update({'remove':True})
return HttpResponse(json.dumps([mdict], indent=4 * ' '), mimetype='application/json; charset=utf8')
return HttpResponseForbidden('[{"error":"Wrong headers."}]', mimetype='application/json; charset=utf8')
Что делает:
смотрит, есть ли связанный объект с таском, если нет - создает. и потом ищет таски и добавляет их, как парент таски для другого таска. Если ничего нет - то просто удаляет.
и как-то оно странно отрабатывает. То нормально, то ошибку выводит. В чем подвох?
ошибка:
Exception Type: IntegrityError
Exception Value:
(1048, "Column 'task_id' cannot be null")
Exception Location: /usr/local/lib/python2.6/dist-packages/django/db/models/query.py in get_or_create, line 393
Python Executable: /usr/bin/python
полный трэйсбэк вытащить не просто((