【发布时间】:2019-04-10 19:55:30
【问题描述】:
我的 django rest 应用程序中有以下多对多数据结构:
class User(Model):
name = models.CharField(max_length=64)
memberships = models.ManyToManyField('Membership', through='UserMembership', related_name='users')
def __str__(self):
return "{}".format(self.name)
class Membership(Model):
name = models.CharField(max_length=64)
def __str__(self):
return "{}".format(self.name)
class UserMembership(Model):
user = models.ForeignKey('User', on_delete=models.CASCADE)
membership = models.ForeignKey('Membership', on_delete=models.CASCADE)
reason = models.CharField(max_length=64)
当我想列出我得到的所有用户时:
{
id: 1,
name: "name-a",
memberships: [
{
id: 1,
name: "member-a"
}, ...
]
}
但我实际上想包括“原因”字段
{
id: 1,
name: "name-a",
memberships: [
{
id: 1,
name: "member-a",
reason: "somereason"
}, ...
]
}
但是如何修改查询集呢?
User.objects.all().values('members__usermember')
不幸的是没有工作......
有人支持吗?
编辑:
序列化器:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'name', 'memberships')
class MembershipSerializer(serializers.ModelSerializer):
class Meta:
model = Membership
fields = ('id', 'name')
【问题讨论】:
标签: django database join orm django-queryset