【发布时间】:2021-12-03 04:25:23
【问题描述】:
我正在使用 django rest 框架开发一个基本的 rest api。我的数据库在 MySQL 上。对于其中一个功能,当我尝试发布时,它给了我一个错误,因为已经有一行具有相同的用户名。我已将模型设置为将其所有三个字段都设置为 unique_together。请帮助我了解我哪里出错了,这是我目前所拥有的sn-ps:
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 请求中提交的内容,但它说用户名已经存在,即使日期和时间是唯一的。
请帮忙。
谢谢!
【问题讨论】:
标签: django django-models django-rest-framework django-views django-serializer