python-3.x - Django 休息框架工作;组合来自不同模型的数据不起作用
问题描述
我尝试合并来自两个模型的数据。序列化程序看起来像这样。
class FindOwnerSaveSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'first_name', 'last_name','image')
#fields = ('__all__')
class SaveSerializer(serializers.ModelSerializer):
content = FindOwnerSaveSerializer(source='user',read_only=True)
class Meta:
model = Save
fields = ('project_id','content')
保存模型如下所示
class Save(models.Model):
project_id = models.ForeignKey(Project, on_delete=models.DO_NOTHING)
user_id = models.ForeignKey(User, on_delete=models.DO_NOTHING)
视图看起来像这样
class SaveView(UpdateAPIView):
serializer_class = SaveSerializer
permission_classes = [IsAuthenticated]
def get_queryset(self):
try:
return Save.objects.filter(user_id=self.request.user)
except Exception as e:
logger.error(e)
return Response(data='false')
def get_object(self):
try:
if Project.objects.get(project_id=self.request.data['project_id']):
return Response(data='true')
except Exception as e:
logger.error(e)
return Response(data='false ')
响应看起来像这样。没有用户数据进入。
[
{
"project_id": 78
}
]
可能是什么问题。我正在使用 django 2.2.7 和 rest framewework 3.10.3。
解决方案
您的来源参考的问题,应该source='user_id'
不是source='user'
class SaveSerializer(serializers.ModelSerializer):
content = FindOwnerSaveSerializer(source='user_id',read_only=True) # not `source='user'`
class Meta:
model = Save
fields = ('project_id','content')
推荐阅读
- pandas - python:列中的空值位置
- datetime - 想要将到期日期保存在使用 def save(self, *args, **kwargs) 覆盖的数据库中:
- javascript - 如何解决问题 TypeError: Router.use() requires middleware function but got a Object
- node.js - 在 azure 函数 nodejs 中读取“application/x-www-form-urlencoded”传入请求中的参数
- python - Kivy 标签:on_touch_down 事件在屏幕各处触发
- matplotlib - 当使用 mpl_toolkits.axisartist.subplot 的紧凑布局时,matplotlib 颜色栏会在正确的大小上创建一个大空间
- netbeans-8.2 - 有没有办法可以在 if 语句中添加按钮按下?
- r - R函数,用于从文本文件中创建列表,每行作为名称和向量
- spring-boot - Docker 拒绝连接到端口 1025 上的邮件服务器
- return - 使用过程类范围的输出参数作为函数返回值