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.