get()返回了多个--Django Restframework



我有一个Django模型,它需要有超过1个图像和超过1个文件(数量可能根据需要而变化(,为此我相应地调整了我的管理面板,就像这个一样

型号.py

class MasterIndividualMembers(models.Model):
individualmemberId = models.CharField(primary_key=True, max_length=100, default=1)
...
...
def __str__(self):
return self.firstname + " " + self.lastname
class IndividualMemberPhotos(models.Model):
individualmemberId = models.ForeignKey(MasterIndividualMembers, default=None,on_delete=models.CASCADE)
image = models.ImageField(upload_to="individualmemberphotos/")

class IndividualMemberCatalogue(models.Model):
individualmemberId = models.ForeignKey(MasterIndividualMembers, default=None,on_delete=models.CASCADE)
files = models.FileField(upload_to="individualmembercatalogue/")

管理员.py

class IndividualMemberPhotosAdmin(admin.StackedInline):
model = IndividualMemberPhotos
class IndividualMemberCatalogueAdmin(admin.StackedInline):
model = IndividualMemberCatalogue
@admin.register(MasterIndividualMembers)
class MasterIndividualMembersAdmin(admin.ModelAdmin):
inlines = [IndividualMemberPhotosAdmin,IndividualMemberCatalogueAdmin]

class Meta:
model = MasterIndividualMembers

对于视图,我只需制作一个功能来提供所有图像、文档和该用户的详细信息

views.py

@csrf_exempt
@api_view(['POST'])
@permission_classes([IsAuthenticated])
def get_individualmember(request):
if request.method == 'POST':
try:
individualmemberId = request.POST.get('individualmemberId')
result = {}
result['individualMemberDetails'] = json.loads(serializers.serialize('json', [MasterIndividualMembers.objects.get(individualmemberId=individualmemberId)]))
result['individualPhotoDetails'] = json.loads(serializers.serialize('json', IndividualMemberPhotos.objects.filter(individualmemberId__individualmemberId = individualmemberId)))
result['individualCatalogueDetails'] = json.loads(serializers.serialize('json', IndividualMemberCatalogue.objects.filter(individualmemberId__individualmemberId = individualmemberId)))
except Exception as e:
return HttpResponseServerError(e)

问题:在获取任何单个成员的详细信息时,它会抛出一个错误get() returned more than one IndividualMemberPhotos -- it returned 2!,该错误预计有1个以上的对象。

我如何制作Restframework来为我提供所有图像对象的详细信息。

不要使用严格返回单个元素的get(),而是使用返回0个或更多元素的filter()

如中所述https://docs.djangoproject.com/en/3.2/topics/db/queries/#retrieving-一个带有总的单一对象

filter((将始终为您提供一个QuerySet,即使只有一个对象匹配查询-在这种情况下,它将是一个QuerySet,包含单一元素。

如果您知道只有一个对象与您的查询匹配,则可以在直接返回对象的管理器上使用get((方法:

您正在经历的行为实际上记录在这里https://docs.djangoproject.com/en/3.2/ref/models/querysets/#django.db.models.query.QuerySet.get

如果get((找到多个对象,它将引发Model.MultipleObjects返回的异常:

最新更新