你好,所以当我尝试列出数据库(api)上的所有Animes对象时,我一直在为这个问题而苦苦挣扎
class AnimesViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.AllowAny]
queryset = Animes.objects.all()
serializer_class = AnimesSerializer
@action(methods=['get'],detail=False)
def types(self,request):
return Response(getTypes())
@action(methods=['get'],detail=False)
def _action(self,request):
li = Animes.objects.all().filter(types__icontains='action')
result_list = li.values('id', 'title', 'coverLink', 'yearProd', 'rates', 'types', 'story')
return Response(result_list)
访问时:
serializer.py:
class AnimesSerializer(serializers.ModelSerializer):
class Meta:
model = Animes
fields = ('id', 'title', 'coverLink', 'yearProd', 'rates', 'types', 'story')
router.py:
from rest_framework import routers
from .api import AnimesViewSet
router = routers.DefaultRouter()
router.register('animes', AnimesViewSet, 'animes')
urlpatterns = router.urls
models.py:
class Animes(models.Model):
title = models.TextField()
animePageLink = models.TextField()
pageNum = models.IntegerField()
coverLink = models.TextField()
yearProd = models.IntegerField()
rates = models.DecimalField(max_digits=10,decimal_places=1)
types = models.TextField(null=True)
story = models.TextField()
def types_to_list(self):
return self.types.split(',')
urls.py:
path('api/',include('animes.router')),
动漫单个实例的示例:
{"id":2,"title":"Mo Dao Zu Shi","coverLink":"https://xxx/test.jpg","yearProd":2018,"rates":"8.6","types":"action,adventure,historical,mystery,supernatural,comedy","story":"test story..."}
我已经尝试过许多在 stackoverflow 上遇到相同问题的人提供的解决方案,但是没有一个对我真正有用!
PS:在Django和Rest Framework上我仍然是新手 〜谢谢你!
答案 0 :(得分:0)
好的,我解决了这个问题! 基本上,我将IntegerField类中的field.py的返回值更改为返回值,而不是int(value)..因此,我认为这是数据库中应为int的内容,但不是!
当我检查时发现自己的一个动漫实例具有:“ Shuk”作为 yearProd ,该类型应该是int类型,主要问题是因为我忘记了检查是否当我从外部插入数据时,值是否为int,因此只需更改模型中的字段类型即可解决该问题:
yearProd = models.CharField(max_length=4)
希望这对将来的某人有用。 非常感谢!