Django: как обновить несколько записей? - PullRequest
1 голос
/ 29 апреля 2020

Мне нужно обновить несколько записей (строк) в таблице.

Сначала я получаю информацию для выбора строк для обновления:

ran_st1 = 1
ran_st2 = 1
ran_bra = 'A'
pay_ide = 'FR'
bra_lib = 'Polyvitamines et oligo-éléments'

Затем я выбираю строки для обновлено:

rows= Randomisation.objects.filter(Q(ran_st1 = ran_st1) & Q(ran_st2 = ran_st2) & Q(ran_bra = ran_bra) & Q(pay_ide = pay_ide))

И затем, я, хотя, чтобы сделать al oop так, но не уверен:

for row in rows:
    r = get_object_or_404(Randomisation, ran_ide = row.ran_ide)
    r.ran_act = 1
    r.save()

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете обновить с помощью .update(..) [Django -doc] :

Randomisation.objects.filter(
    ran_st1=ran_st1,
    ran_st2 = ran_st2,
    ran_bra = ran_bra,
    pay_ide = pay_ide
)<b>.update(ran_act=1)</b>

Это будет работать с запросом, который выглядит следующим образом:

UPDATE randomisation
SET ran_act = 1
WHERE ran_st1 = 1
  AND ran_st2 = 1
  AND ran_bra = 'A'
  AND pay_ide = 'FR'
  AND bra_lib = 'Polyvitamines et oligo-elements'

Таким образом, это делается в одном запросе, а не в нескольких запросах, когда вы каждый раз выбираете элемент, обновляете этот элемент, а затем делаете запрос на обновление базы данных для этого конкретного c запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...