创建分支时,我想根据所请求用户的公司添加公司的ID(外键)。基本上我只想在序列化程序级别添加公司ID。
这是我的branchViewset的创建功能:
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']
此外,我建议使用permissions防止views中的未经授权的请求。