关键词:
【中文标题】如何在 django rest 框架中列出来自特定模型的所有对象?【英文标题】:How to list all objects from particular model in django rest framework? 【发布时间】:2022-01-21 22:42:24 【问题描述】:我有两个模型:
class Product(models.Model):
name = models.CharField(max_length=200)
price = models.DecimalField(default=0, decimal_places=2, max_digits=10)
def __str__(self):
return self.name
class Receipt(models.Model):
purchase_date = models.DateTimeField(auto_now=True, null=False)
shop = models.ForeignKey(Shop, on_delete=models.SET_NULL, null=True)
products = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
def __str__(self):
return super().__str__()
我的收据网址如下所示:
我希望它显示所有产品的列表,而不是其中的数量。如何做到这一点?
我的观点集:
class ReceiptViewSet(viewsets.ModelViewSet):
queryset = Receipt.objects.all()
serializer_class = ReceiptSerializer
permission_classes = [AllowAny]
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
permission_classes = [AllowAny]
enter code here
序列化器:
class ProductSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Product
fields = ['id', 'name', 'price']
class ReceiptSerializer(serializers.HyperlinkedModelSerializer):
products = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = Receipt
fields = ['id', 'purchase_date', 'shop', 'products']
【问题讨论】:
分享你的序列化器? 抱歉,我更新了我的问题并在那里添加了序列化程序 【参考方案1】:我已经尝试过 Sumithran 的解决方案,但我做了一个小的调整,而不是使用 serializers.HyperlinkedModelSerializer 我使用了 serializers.ModelSerializer,它显示的产品如下View
希望它能回答您正在寻找的内容:)
from rest_framework import serializers
class ReciptSerializer(serializers.ModelSerializer):
class Meta:
model = Receipt
fields = ['id', 'purchase_date', 'shop', 'products']
depth = 1
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = '__all__'
【讨论】:
答案中应包含更改。 谢谢你通知我,我更新了我的答案@mstgnz【参考方案2】:您可以使用depth
选项简单地指定嵌套表示
试试这个
class ReceiptSerializer(serializers.HyperlinkedModelSerializer):
...
class Meta:
model = Receipt
fields = ['id', 'purchase_date', 'shop', 'products']
depth = 1
否则
class ReceiptSerializer(serializers.HyperlinkedModelSerializer):
products = ProductSerializer(many=True, read_only=True)
...
class Meta:
model = Receipt
fields = ['id', 'purchase_date', 'shop', 'products']
【讨论】:
我试过了,它告诉我:TypeError at /receipts/ 'Product' object is not iterable @santana011 删除many=True
再试一次,顺便说一句,我真的不明白你为什么用复数命名相关连接
@santana011 第一种方法怎么样?
它有效,但我不明白为什么收据只能有一种产品。每当我尝试向收据添加另一个产品时,它都会切换它们
Foreiginkey 只能有一个关系,在您的方案中,您可以实现多对多关系的反向外键。如何在 django rest 框架中添加自定义权限和角色
】如何在djangorest框架中添加自定义权限和角色【英文标题】:howtoaddcustompermissionsandrolebasedindjangorestframework【发布时间】:2021-11-0120:23:27【问题描述】:models.py===============来自django.contrib.auth.models从django.db导入AbstractUser导入模型#C... 查看详情
如何在 React 中显示来自 django-rest-framework 的错误消息
】如何在React中显示来自django-rest-framework的错误消息【英文标题】:Howtodisplayerrormessagesfromdjango-rest-frameworkinReact【发布时间】:2019-12-2910:24:11【问题描述】:我正在尝试使用Django休息框架和反应,redux来实现用户注册表单。我能... 查看详情
Django rest框架将POST数据分配给特定用户
】Djangorest框架将POST数据分配给特定用户【英文标题】:DjangorestframeworkassignPOSTdatatospecificuser【发布时间】:2017-01-0211:37:45【问题描述】:一个月前启动了Django和DRF,但我被困在这部分...我从Android设备获得了一个JSON,其中已经包... 查看详情
如何在 Django REST 框架中使用事务?
】如何在DjangoREST框架中使用事务?【英文标题】:HowtousetransactionswithDjangoRESTframework?【发布时间】:2017-02-2212:07:10【问题描述】:我希望使用DjangoREST框架“一起”创建多个模型对象——即在单个事务中。目标是每个对象仅在事... 查看详情
如何在 django rest 框架中访问获取请求数据
】如何在djangorest框架中访问获取请求数据【英文标题】:Howtoaccessgetrequestdataindjangorestframework【发布时间】:2020-02-0101:22:59【问题描述】:如何在djangorest框架中访问GET请求数据。在文档中,他们提到“为了代码清晰,我们建议使... 查看详情
Django:项目使用来自 REST API 的数据,如何在这个系统中使用外部应用程序?
】Django:项目使用来自RESTAPI的数据,如何在这个系统中使用外部应用程序?【英文标题】:Django:ProjectconsumingdatafromRESTAPI,Howtouseexternalappsinthissystem?【发布时间】:2012-03-0413:47:45【问题描述】:我有一个DjangoWeb前端,它使用来自RE... 查看详情
如何在 Django Rest Framework 中为特定应用设置权限
】如何在DjangoRestFramework中为特定应用设置权限【英文标题】:HowsetpermissionforspecificappinDjangoRestFramework【发布时间】:2018-03-0122:09:15【问题描述】:我的Django项目中有两个REST应用程序:api-应该是AllowAny和ReadOnly!apicrm-应该是rest_fr... 查看详情
如何在 django rest 框架中定义列表字段?
】如何在djangorest框架中定义列表字段?【英文标题】:HowcanIdefinealistfieldindjangorestframework?【发布时间】:2013-06-2118:15:07【问题描述】:假设我有一堂课classTags(object):tags=[]def__init__(self,tags):self.tags=tags和一个自定义列表字段classTags... 查看详情
如何在 Django REST 框架中更改字段名称
】如何在DjangoREST框架中更改字段名称【英文标题】:HowtochangefieldnameinDjangoRESTFramework【发布时间】:2014-05-2209:21:44【问题描述】:我正在尝试更改DRF序列化程序中的模型字段名称,如SQL中的别名。我尝试了不同的方法,但都没有... 查看详情
如何在 django rest 框架 ModelSerializer 中覆盖模型字段验证
】如何在djangorest框架ModelSerializer中覆盖模型字段验证【英文标题】:HowtooverridemodelfieldvalidationindjangorestframeworkModelSerializer【发布时间】:2014-05-0306:30:29【问题描述】:我有以下型号:classUserProfile(models.Model):mobileNumber=models.BigInteg... 查看详情
如何在 django rest 框架中的嵌套序列化器相关对象上使用 prefetch_related?
】如何在djangorest框架中的嵌套序列化器相关对象上使用prefetch_related?【英文标题】:Howtouseprefetch_relatedonnestedserializerrelatedobjectsindjangorestframework?【发布时间】:2021-06-0615:15:48【问题描述】:从下面的模型中,我尝试在课程序列... 查看详情
如何在 Django REST 框架可浏览 API 中发送标头
】如何在DjangoREST框架可浏览API中发送标头【英文标题】:HowtosendheadersinDjangorestframeworkbrowsableAPI【发布时间】:2017-02-0308:17:42【问题描述】:如何在DjangoREST框架可浏览API视图中发送标头,我通过匹配一个令牌来验证调用,并在标... 查看详情
如何在 django REST 框架中修改 request.data
】如何在djangoREST框架中修改request.data【英文标题】:Howcanmodifyrequest.dataindjangoRESTframework【发布时间】:2016-02-2423:58:07【问题描述】:我正在使用DjangoREST框架request.data=\'"id":"10","user":"tom"\'我想添加额外的属性,比如"age":&qu... 查看详情
如何在 Django rest 框架中捕获 Model.DoesNotExist 异常?
】如何在Djangorest框架中捕获Model.DoesNotExist异常?【英文标题】:HowtocapturetheModel.DoesNotExistexceptioninDjangorestframework?【发布时间】:2019-03-0515:26:15【问题描述】:在DjangoRESTFramework中,当您查询数据库模型并且它不存在时,将引发异... 查看详情
如何在单个帖子中更新多个实例 - django rest 框架
】如何在单个帖子中更新多个实例-djangorest框架【英文标题】:howtoupdateinasinglepostmultipleinstances-djangorestframework【发布时间】:2018-09-1522:22:15【问题描述】:我有数组对象:constordsend=[order:4,id:1,,order:2,id:2,]其中id是主键,对于axios... 查看详情
如何在 django-rest 框架中验证我的 JWT 令牌?
】如何在django-rest框架中验证我的JWT令牌?【英文标题】:HowtoauthenticatemyJWTtokenindjango-restframework?【发布时间】:2019-10-3123:59:32【问题描述】:我在Djangorest框架中实现了JWT令牌身份验证,它获取了我的令牌,但我遇到的问题是我... 查看详情
如何在 django rest 框架中验证 jwt 身份验证中的令牌
】如何在djangorest框架中验证jwt身份验证中的令牌【英文标题】:howtovalidatetokeninjwtauthenticationindjangorestframework【发布时间】:2021-10-2712:33:59【问题描述】:如何在SimpleJWT身份验证中验证JWT令牌。如果令牌访问令牌已过期,我需要... 查看详情
如何在 Django REST 框架中为多对多字段定义“IsOwner”自定义权限?
】如何在DjangoREST框架中为多对多字段定义“IsOwner”自定义权限?【英文标题】:Howtodefinea\'IsOwner\'custompermissionforamany-to-manyfieldinDjangorestframework?【发布时间】:2021-09-1914:15:53【问题描述】:我是Django的新手,尤其是Django-rest-framew... 查看详情