我是python中的初学者,Django休息时我在获取数据时卡住了。
以下是我的API : - http://127.0.0.1:8000/subjects/course/23/
我希望根据我选择的课程获得所有主题数据。当我点击此API时,如果单个数据存在工作真棒但是当在course_id内存在多个主题然后给出错误,例如:
异常类型:MultipleObjectsReturned 异常值:get()返回多个主题 - 它返回2!
这是我的model.py
class Subject(models.Model):
course = models.CharField(max_length=255, blank=False, unique=False)
subject = models.CharField(max_length=255, blank=False, unique=False)
description = models.CharField(max_length=255, blank=False, unique=False)
amount = models.CharField(max_length=255, blank=False)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
def __str__(self):
return "{}".format(self.title)
这是我的serializer.py
class SubjectSerializer(serializers.ModelSerializer):
class Meta:
model = Subject
fields = ('id', 'course', 'subject', 'description', 'amount', 'date_created', 'date_modified')
read_only_fields = ('date_created', 'date_modified')
lookup_field = 'course'
这是我的views.py
class ViewSubjectAccordingCourse(generics.RetrieveUpdateDestroyAPIView):
"""This class handles the GET and POSt requests of our rest api."""
queryset = Subject.objects.all()
serializer_class = SubjectSerializer
lookup_field = 'course'
这是我的urls.py
url(r'^subjects/course/(?P<course>[0-9]+)/$', ViewSubjectAccordingCourse.as_view(), name="details"),
答案 0 :(得分:0)
所以问题是
course = models.CharField(max_length=255, blank=False, unique=False)
这个值对于一个以上的主题是相同的,因为你发送的是unique = False这似乎是设计的,是计划每个课程有一个或多个科目?
如果它涉及多个主题,则需要使用ListAPIView
和一些get_queryset
修改。如果课程仅包含一个主题,则将该字段更改为unique=True