gpt4 book ai didi

python - Django - get() 返回多个 - 它返回 5

转载 作者:行者123 更新时间:2023-11-29 07:48:24 25 4
gpt4 key购买 nike

我使用的是 Django 1.8dev,对 Django 来说非常陌生。我有一个基于 mysql view 创建的模型,如 create view arter_to_referencer as select ...

class SpeciesToReferences(models.Model):
species_id = models.IntegerField(db_column='species_id')
reference_id = models.IntegerField(db_column='reference_id')
reference = models.CharField(db_column='Reference', max_length=255, blank=True, primary_key=True)
beset = models.CharField(db_column='Set_', max_length=1, blank=True)
...
class Meta:
managed = False
db_table = 'arter_to_referencer'

序列化器.py

class SpeciesToReferencesSerializer(serializers.ModelSerializer):
class Meta:
model = SpeciesToReferences()
id_field = 'species_id'
fields = ['species_id', 'reference_id', 'reference', 'beset', ...]

View .py

class SpeciesToReferencesList(viewsets.ModelViewSet):
queryset = SpeciesToReferences.objects.all()
serializer_class = SpeciesToReferencesSerializer

我想要的只是直接在我们的 API 上调用 SpeciesToReferences :

$http.get('/api/speciestoreferences/'+$routeParams.artsnummer).success(function(data, status) {
console.log(data);
});

其中 $routeParams.artsnummer 是 486 或任何其他值,或者只是像这样

http://localhost:8000/api/speciestoreferences/486/

它实际上似乎有效,如果我注入(inject) 486,它会返回正确的结果数量,5 等等。但它不断抛出错误:

get() returned more than one SpeciesToReferences -- it returned 5!

我怎样才能避免这种情况?我猜问题是 species_id 不是唯一的,但我只是想要 species_id=X 处的所有出现。

已经阅读了 django 手册,谷歌搜索,阅读了一些“类似的”stackoverflow 问题 - 但没有解决方案或解释真正帮助我。我认为应该可以定义类 -> 模型 -> View ,以便它接受数据集的多个结果。我感觉我应该在 SpeciesToReferencesList 上设置某种过滤器,但不知道该怎么做。

最佳答案

您似乎正在使用django rest framework还有 Django 。您可能需要使用像 ListAPIView 这样的通用 View ,而不是使用 ViewSet。 。它可用于提供customer filters .

Class SpeciesToReferencesList(ListAPIView):
queryset = SpeciesToReferences.objects.all()
serializer_class = SpeciesToReferencesSerializer

def get_queryset(self):
species_id = self.kwargs['species_id']
return self.model.objects.filter(species_id=species_id)

关于python - Django - get() 返回多个 <entity> - 它返回 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27125858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com