【发布时间】:2019-01-01 22:50:28
【问题描述】:
我的项目中有一些模型,我需要 API 的特殊响应,我正在使用 Django Rest 框架。
class Goal(models.Model):
name = models.CharField()
# more fields
class Task(models.Model):
name = models.CharField()
goal = models.ForeignKey(Goal)
class UserTask(models.Model):
goal = models.ForeignKey(Goal)
user = models.ForeignKey(User)
# other fields
我有这样的回应:
{
"name": "One goal",
"task": [
{
"name": "first task"
},
{
"name": "second tas"
}
]
}
但我需要这个:
{
"name": "One goal",
"task": [
{
"name": "first task",
"is_in_usertask": true
},
{
"name": "second tas",
"is_in_usertask": false
}
]
}
我看到了this in DRF docs,但我不知道如何按当前用户(或 URL 参数中给出的其他用户)和每个 Goal 过滤 UserTask。
编辑:
# serializers
class TaskSerializer(serializers.ModelSerializer):
class Meta:
model = Task
class GoalSerializer(serializers.ModelSerializer):
# related_name works fine
tasks = TaskSerializer(many=True)
class Meta:
model = Goal
【问题讨论】:
-
你能添加你的序列化器吗?
-
另外,
is_in_usertask变成True/False背后的逻辑是什么? -
当当前用户和
Task在UserTask是True时 -
我不明白 :(
-
如果当前登录的用户和
Task在UserTask,那么is_in_usertask应该是true,否则应该是false
标签: python django django-rest-framework