返回信息流背景: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表来?
这是一条镜像帖。来源:北邮人论坛 / python / #20275同步于 2017/12/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
有同学用过django rest framework搭web吗?请教些问题
Gewter
2017/12/13镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
第一个问题没看明白,
第二个问题可以这样来搞:
b1=B.objects.all()
a1=b1.a_set.all()
django可以内部实现通过外键来做查询
给个具体例子吧~~该怎么写呢?
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()
: ...................
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):
: ...................
非常感谢!这样子序列化输出可行了,那返序列化输入该怎么做呢?就是post带json数据,然后怎么通过serializer来save?
【 在 andlase 的大作中提到: 】
: 第二个问题除了2楼的方法,还有就是
: b = B.objects.filter(....)
: a = A.objects.get(b__in = b)