Почему я не могу добавить данные в объекты django Model
Случилось немного странное дело. Я делаю post запрос с сайта, над которым работаю, получаю данные на бэкенде, но не могу получить доступ к полю модели с полученными данными
My Models.py:
class Records(models.Model):
user = models.ForeignKey(Teacher, null=True, on_delete= models.SET_NULL)
Year = models.CharField(max_length=100, null=True)
January = models.CharField(max_length=100, null=True)
Feburary = models.CharField(max_length=100, null=True)
March = models.CharField(max_length=100, null=True)
April = models.CharField(max_length=100, null=True)
May = models.CharField(max_length=100, null=True)
June = models.CharField(max_length=100, null=True)
July = models.CharField(max_length=100, null=True)
August = models.CharField(max_length=100, null=True)
September = models.CharField(max_length=100, null=True)
October = models.CharField(max_length=100, null=True)
November = models.CharField(max_length=100, null=True)
December = models.CharField(max_length=100, null=True)
Мой Views.py:
@api_view(['POST'])
def Attendance(request):
data = request.data['list']
print (data)
user = Teacher.objects.get(name=data[0].split('-')[0])
record = Records.objects.get(user=user, Year=data[0].split('-')[1])
month = data[1]
print(month) # output is January
return JsonResponse({'success':True})
Теперь, когда я пытаюсь вывести поле Январь из модели записей, я делаю это как print(record.January)
Проблема, с которой я столкнулся, заключается в том, что я не могу сделать record.month даже если месяц представляет январь
Я хочу добавить данные, полученные из запроса post, в поле модели, обычно я делаю следующее:
record = Records.objects.get(user=user)
record.January = "50"
record.save()
но, как уже упоминалось ранее, record.month не работает, скорее я получаю эту ошибку:
AttributeError: объект 'Records' не имеет атрибута 'month'
Что я делаю неправильно? Есть ли другой способ сделать то же самое?
Потому что 'January' - это строка, а вы не можете вызвать метод со строкой. Но вы можете получить его с помощью:
month_of_record = getattr(record, month)
В основном, он переводит строковое значение переменной month в имя поля записи.