В моей базе данных (SQLite) я хотел бы обновить каждый столбец в данной строке, используя цикл for в словаре. Я искал документацию SO и Django, но не смог найти никакой информации об обновлении нескольких столбцов с помощью цикла for. Я подозреваю, что есть простое решение моей проблемы, но у меня не хватает ключевых слов для Google.
Вот очень простой пример, который сводит проблему к своей сути:
models.py
from django.db import models
class author_ratings(models.Model):
name = models.TextField()
book_one = models.IntegerField()
book_two = models.IntegerField()
book_three = models.IntegerField()
views.py
from models import author_ratings
ratings_dictionary = {'book_one': 10, 'book_two': 20, 'book_three': 30}
current_author = author_ratings.objects.filter(name="Jim")
for book,rating in ratings_dictionary:
current_author.book = rating
current_author.save()
Проблема: вместо сохранения значений 10, 20 и 30 в соответствующие столбцы строки этого автора Джанго выдает следующую ошибку:
"AttributeError: у объекта 'current_author' нет атрибута 'book'"
EDIT:
В ответах ниже Шафикур Рахман правильно указывает, что «книга» не является доступным полем (доступны только «имя», «book_one», «book_two» и «book_three»). У меня возникает вопрос: как использовать цикл for для обновления каждого поля без необходимости жестко их кодировать?
Например, я хочу избежать необходимости явно вводить каждый столбец:
current_author.book_one = ratings_dictionary['book_one']
current_author.book_two = ratings_dictionary['book_two']
current_author.book_three = ratings_dictionary['book_three']
current_author.save()
Приведенной выше информации должно быть достаточно, чтобы полностью понять вопрос, но я могу предоставить любые другие детали по запросу.
Заранее благодарю за любую помощь.