django - Django注释字段未传递给序列化程序
问题描述
我对为什么这不起作用感到有点沮丧。
楷模:
class User(models.Model):
...
class Group(models.Model):
...
class Member(models.Model):
user = models.ForeignKey(User, related_name='groups')
group = models.ForeignKey(Group, related_name='members')
field1 = models.IntergerField()
看法:
def get_queryset(self):
return Group.objects.filter(members__user=self.request.user).annotate(field1=F('members__field1'))
序列化器:
field1 = serializers.SerializerMethodField()
def get_field1(self, obj):
return obj.field1
class Meta:
model = models.Group
fields = ('field1', ...)
获取错误对象没有属性'field1'
但是,在 shell 窗口中使用相同的查询成功地检索了 field1 的值
g = Group.objects.filter(members__user=self.request.user).annotate(field1=F('members__field1'))
print(g[0].field1)
成功打印 field1 值
解决方案
更改 get_field1() 方法
def get_field1(self, obj):
return obj.members.field1
推荐阅读
- docker - Gitlab CI 将文件从 repo 复制到管道并将其提取到路径
- android - React Native - NSExceptionMinimumTLSVersion 等价于 Android
- javascript - 一个新手问题。什么是 **.config.js 和 **.vue.js 文件?它与普通的 .js 文件有何不同?
- css - 删除 React Bootstrap 中的下拉箭头
- html - HTML CSS - 部分侧边栏
- asp.net - 使用 SPA 前端从 ASP.Net 调用 Duplex WCF
- c# - 在 MVC 和数据表中复制数据
- julia - 如何过滤像数组理解这样的地图?
- azure - MS Teams - 在“应用 + 用户”上下文(图形 API)中,此资源不支持丰富的通知
- odoo - 未找到外部 ID