Django Rest Framework - Cannot POST because username already exists

Я работаю над базовым rest api с использованием django rest framework. И моя база данных находится на MySQL. Для одной из функций, когда я пытаюсь выполнить POST, она выдает ошибку, потому что уже есть строка с таким же именем пользователя. Я настроил модель так, чтобы все три ее поля были уникальными. Пожалуйста, помогите мне понять, где я ошибаюсь, вот фрагменты того, что у меня есть на данный момент:

models.py:

class VolunteerHours(models.Model):
username = models.OneToOneField(Volunteer, models.DO_NOTHING, db_column='Username', primary_key=True) 
date = models.DateField(db_column='Date') 
hours = models.IntegerField(db_column='Hours')  

class Meta:
    managed = False
    db_table = 'volunteer_hours'
    unique_together = (('username', 'date', 'hours'),)

urls.py:

urlpatterns = [

path('timesheet/', views.TimesheetAPIView.as_view()),]

views.py:

from . import models
from . import serializers
from rest_framework import generics
from rest_framework import mixins

class TimesheetAPIView(generics.GenericAPIView, mixins.CreateModelMixin):
    serializer_class = serializers.VolunteerTimesheetSerializer

    def post(self, request):
        return self.create(request)

serializers.py:

class VolunteerTimesheetSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.VolunteerHours
        fields = '__all__'

Ошибка, которую я получаю:

 "username": [
        "volunteer hours with this username already exists."
    ]

Что я хочу сделать, так это добавить столько строк с одним и тем же именем пользователя, пока дата и часы уникальны. Это то, что отправляется в моих POST запросах, но он говорит, что имя пользователя уже существует, даже если дата и часы уникальны.

Помогите, пожалуйста.

Спасибо!

Вы создали отношение OneToOne с VolunteerHours и Volunteers, что означает, что только один из них может существовать в отношениях. Как говорит @DEEPAK KUMAR, вы захотите удалить primary_key=True, но вы также захотите изменить отношение на OneToMany через поле ForeignKey.

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