Почему я не могу добавить данные в объекты 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 в имя поля записи.

Вернуться на верх