django - 如何在 django rest 框架中手动将外键添加到序列化程序?
问题描述
在创建分支时,我想根据所请求用户的公司添加公司的 ID(外键)。基本上我只想在序列化程序级别添加公司 ID。
这是我的分支视图集的创建功能:
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data, context=context)
if serializer.is_valid(raise_exception=True):
serializer.save(company=request.user.owner)
这是我的序列化程序:
class CreateBranchSerializer(serializers.ModelSerializer):
user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
def validate(self, attrs):
try:
user = self.context['request'].user
except:
raise CustomAPIException(status_code=status.HTTP_401_UNAUTHORIZED,
error_code='1006')
return attrs
但是在创建分支时出现错误:
company: field is required
我该如何解决这个问题?
解决方案
您只需要排除company
序列化程序类中的字段Meta
:
class CreateBranchSerializer(serializers.ModelSerializer):
...
class Meta:
...
exclude = ['company']
另外,我建议使用权限来防止视图中的 UnAuthorized 请求。
推荐阅读
- android - Android 数据绑定库 vs Kotlin Android 扩展
- jquery - 逻辑运算符在 jQuery 中无法正常工作
- java - 单击图片时,它应该存储在我手机的内部存储器中
- c# - 使用 linq 从使用 c# 的数据表中获取总和和不同的列数据
- three.js - three.js 如何为背景使用渐变色
- c - 无法复制文本文件并将其粘贴到新文件 C
- javascript - 停止在 javascript 中向父级传播事件
- javascript - 在 JQuery 中加载动态级联下拉列表?
- angular - 如何在Angular2中进行计算?
- hmatrix - windows 10下haskell hmatrix安装