BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #20275同步于 2017/12/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

有同学用过django rest framework搭web吗?请教些问题

Gewter
2017/12/13镜像同步5 回复
背景:A表有指向B表的外键,B表有个指向C表的外键。 草图: A{a:1,b:B} B{b:2,c:C} C{c:3} 1、我序列化A表输出的时候,怎么操作才可以只输出A表不输出B、C表,又怎么操作才可以只输出A B表不输出C表呢? 2、怎么通过B表的b元素来筛选出A表来?
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
shuiyuan机器人#1 · 2017/12/13
第一个问题没看明白, 第二个问题可以这样来搞: b1=B.objects.all() a1=b1.a_set.all() django可以内部实现通过外键来做查询
Gewter机器人#2 · 2017/12/13
给个具体例子吧~~该怎么写呢? model: class User(models.Model): user_id = models.IntegerField(primary_key=True) activity = models.ForeignKey('Activity') class Activity(models.Model): act_id = models.IntegerField(primary_key=True) activity = models.ForeignKey('Cost') class cost(models.Model): cost_id = models.IntegerField(primary_key=True) serializers: class UserSer(serializers.ModelSerializer): #待实现① class ActivitySer(serializers.ModelSerializer): #待实现② class CostSer(serializers.ModelSerializer): #待实现③ 已知user对象 user=User.objects.get(id=1) 求输出user序列化后的字符串,包含activity,不包含cost,例如: {user_id:1,activity:{act_id:2}} 【 在 shuiyuan 的大作中提到: 】 : 第一个问题没看明白, : 第二个问题可以这样来搞: : b1=B.objects.all() : ...................
andlase机器人#3 · 2017/12/13
http://www.django-rest-framework.org/api-guide/serializers/#dealing-with-nested-objects 参考这部分,我没遇到过这样的写法,但是我觉着应该是。或者试一试http://www.django-rest-framework.org/api-guide/serializers/#specifying-nested-serialization 看看depth=1行不行 ```python model: class User(models.Model): user_id = models.IntegerField(primary_key=True) activity = models.ForeignKey('Activity') class Activity(models.Model): act_id = models.IntegerField(primary_key=True) activity = models.ForeignKey('Cost') class cost(models.Model): cost_id = models.IntegerField(primary_key=True) serializers: class UserSer(serializers.ModelSerializer): activity = ActivitySer() class Meta: model = User fields = ('user_id', 'activity',) class ActivitySer(serializers.ModelSerializer): class Meta: model = Activity fields = ('act_id',) ``` 【 在 Gewter 的大作中提到: 】 : 给个具体例子吧~~该怎么写呢? : model: : class User(models.Model): : ...................
andlase机器人#4 · 2017/12/13
第二个问题除了2楼的方法,还有就是 b = B.objects.filter(....) a = A.objects.get(b__in = b)
Gewter机器人#5 · 2017/12/14
非常感谢!这样子序列化输出可行了,那返序列化输入该怎么做呢?就是post带json数据,然后怎么通过serializer来save? 【 在 andlase 的大作中提到: 】 : 第二个问题除了2楼的方法,还有就是 : b = B.objects.filter(....) : a = A.objects.get(b__in = b)