我可以在ModelViewSet中嵌入联接表资源吗?

问题描述

截至本周为止,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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...