Получена `TypeError` при вызове `WordsTable.objects.create()`.

Я пытаюсь сохранить некоторые данные в базе данных с помощью сериализатора. Я создал модель и сериализатор, но при попытке сохранить данные я получаю эту ошибку. Я видел много ответов, но так и не пришел к решению.

Я получаю эту ошибку:Got a TypeError when calling WordsTable.objects.create(). This may be because you have a writable field on the serializer class that is not a valid argument to WordsTable.objects.create(). You may need to make the field read-only, or override the WordsTableSerializer.create() method to handle this correctly.

models.py:

class WordsTable(models.Model):
   session_id = 
   models.IntegerField(db_column='session_ID', 
   blank=True, 
   null=True)  # Field name made lowercase.
   user_id = models.IntegerField(db_column='user_ID', 
   blank=True, null=True)  # Field name made lowercase.
   date = models.DateField(blank=True, null=True, 
   default=datetime.date.today)
   hour = models.TimeField(blank=True, null=True, 
   default=datetime.date.today)
   run_label = models.IntegerField(blank=True, 
   null=True)
   status = models.IntegerField(blank=True, null=True)
   word1 = models.CharField(max_length=45, blank=True, 
   null=True)
   word2 = models.CharField(max_length=45, blank=True, 
   null=True)
   word3 = models.CharField(max_length=45, blank=True, 
   null=True)
   word4 = models.CharField(max_length=45, blank=True, 
   null=True)
   word5 = models.CharField(max_length=45, blank=True, 
   null=True)

   class Meta:
       db_table = 'words_table'

Сериализатор:

class WordsTableSerializer(serializers.ModelSerializer):
    class Meta:
        model = WordsTable
        fields = "__all__"

Views.py:

#API
@api_view(['POST'])
def save_words(request):
    if request.method=="POST":
   
  saveserialize=WordsTableSerializer(data=request.data)
    if saveserialize.is_valid():
        saveserialize.save()
        return Response(saveserialize.data, status=status.HTTP_201_CREATED)
        return Response(saveserialize.data, status=status.HTTP_400_BAD_REQUEST)

Что мне нужно добавить? Это первый раз, когда я использую сериализаторы, поэтому я немного запутался. Спасибо!

Вы объявили hour как models.TimeField, но значением по умолчанию для поля является дата. Если вы хотите хранить значение часа, вы можете попробовать:

hour = models.IntegerField(blank=True, null=True, default=datetime.datetime.now().hour)
Вернуться на верх