【发布时间】:2018-12-27 18:59:36
【问题描述】:
这是我的看法:
class SampleViewSet(viewsets.ModelViewSet):
serializer_class = SampleSerializer
queryset = Sample.objects.all()
def get_queryset(self):
queryset = self.queryset
test_code = self.request.query_params.get('test_code', None)
if test_code is not None:
queryset = queryset.filter(test__test_code=test_code)
return queryset
这是我的模型:
class Sampe(models.Model):
test = models.OneToOneField(Test, null=True, blank=True, on_delete=models.CASCADE)
# few more fields- not so important
这是我的序列化器:
class SampleSerializer(serializers.ModelSerializer):
test_code = serializers.CharField(source='test.test_code')
class Meta:
model = Sample
fields = '__all__'
这在我点击 /api/sample?test_code="existing_param" 时有效 因此,当我执行 /api/sample?test_code="Not_Existing_param" 时,我期望它应该抛出 404,而不是抛出 500 测试匹配查询不存在。非常感谢任何帮助。
谢谢
【问题讨论】:
标签: django django-models django-rest-framework django-views