返回多个对象

时间:2018-01-12 11:31:43

标签: django python-3.x

我是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"),

1 个答案:

答案 0 :(得分:0)

所以问题是

course = models.CharField(max_length=255, blank=False, unique=False)

这个值对于一个以上的主题是相同的,因为你发送的是unique = False这似乎是设计的,是计划每个课程有一个或多个科目?

如果它涉及多个主题,则需要使用ListAPIView和一些get_queryset修改。如果课程仅包含一个主题,则将该字段更改为unique=True