问题描述
截至本周为止,Django和DRF的新手已在树林中广为人知,它具有所有这些功能,但运行速度很快-我的训练营课程是让我们将DRF ViewSet用作基于资源的视图的基类,然后让我们为要添加到返回的Response实例的每个部分添加ModelSerializers。
在用于嵌入联接表中资源的课程中(例如,两个不同的模型作为联接模型上每个ForeignKey字段的基础,如下所示:
#importing Model and ForeignKey fields from models module
class EventGamer(Model):
event = ForeignKey('Event',related_name='registration')
gamer = ForeignKey('Gamer',related_name='registration')
),在我们要为某个游戏玩家嵌入所有事件的视图的list()方法中,我们的ORM调用如下:
gamer = Gamer.objects.get(user=request.auth.user)
events = Event.objects.filter(registration__gamer=gamer)
因此,我们可以基于该QuerySet上的ModelSerializer父类调用EventSerializer:
class EventSerializer(ModelSerializer):
class Meta:
model = Event
fields = (#fields from that model I want embedded)
,然后将结果结果的data属性的结果列表附加到我们在Response对象中发回的内容。
现在-我偶然发现最近在另一个项目上工作的ModelViewSet,并被它如何轻松处理所有URL解析->相应的View方法逻辑而迷住了,甚至不必指定Response对象。
class GameSerializer(serializers.ModelSerializer):
class Meta:
model = Game
fields = ('id','title','description','designer','year_realeased','number_of_players','time_to_play','age_recommendation')
class GamesViewSet(ModelViewSet):
queryset = Game.objects.all()
serializer_class = GameSerializer
# WOW THATS IT IM DONE
但是,我不知如何开始尝试嵌入连接资源,就像在前面的案例中一样。 (在此示例中,我具有GameCategory的Join表,因此我想获取并嵌入与特定“游戏”相关联的所有“类别”的列表)我承认我什至不是100%关于ORM中反向查询的工作原理,例如我们如何使用related_name追溯到“事件”,更不用说如何自定义/覆盖/添加到要序列化的字段了。现在,序列化的Game表示仅包括模型上实际的字段。
TL; DR我想使用ModelViewSet嵌入来自联接表的资源,而不是从哪里开始!
任何关于接下来要学习什么的指南/记录,以了解正在发生的事情,将不胜感激!谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)