Могу ли я назвать поле самостоятельно, когда обновляюсь в представлении Django? - PullRequest
0 голосов
/ 14 июня 2019

Можно ли самому назвать поле при обновлении в представлении Django?

ех

если значение поля равно "ca2"

Могу ли я использовать это как значение поля для функции обновления django-orm?

когда я пытаюсь этот код ниже ошибка происходит

AttributeError: 'CategoryNick' object has no attribute 'update'
def update_shortcut_nick(request):
    if request.method == "POST" and request.is_ajax():
        ca_id = request.POST['ca_id']
        field = request.POST['field']
        ca_nick_update = request.POST['ca_nick_update']

        print('update id : ',ca_id)
        print('update field  : ',field)
        print('update value : ',ca_nick_update)

        update = CategoryNick.objects.get(id=ca_id).update( field = ca_nick_update)
        # .update(field = ca_nick_update)

        print('update success : ' , update.id);

        return JsonResponse({
            'message': 'shortcut category nick name update success ' +ca_nick_update,
        })
    else:
        return redirect('/wm/shortcut')

и я изменился, чтобы получить => фильтр но

        update = CategoryNick.objects.filter(id=ca_id).update(field = ca_nick_update)

ошибка все еще произошла:

CategoryNick has no field named 'field'

1 Ответ

1 голос
/ 14 июня 2019

Вы не можете выполнить обновление для .get, потому что .get сначала дает вам объект, а не набор запросов.обратите внимание, что .filter, .update и все другие методы являются цепочечными, что означает, что вы можете написать запрос, как показано ниже.измените запрос, чтобы достичь того, что вы хотите.и это возможно, потому что для каждой из этих операций Django возвращает queryset .это означает, что при вызове .filter будет возвращен новый набор запросов и то же самое с .exclude и .update .и вот как возможно сцепление.

В вашем случае, потому что вы использовали .get и разорвали цепочку, теперь вы получили реальный объект, а не queryset .Однако вы можете выполнить ту же операцию, используя .filter и обновить ее, как показано ниже

Student.objects.filter(id=22).update(house="Hufflepuff)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...