django - Django Rest Framework 用户外键
问题描述
我正在使用基本 Django Auth User 进行用户处理,并且身份验证正常工作。现在我正在尝试为我的 Rest API 创建一个 Post 方法,该方法自动从请求中获取用户,然后获取所有数据输入并保存它。
我尝试过各种序列化尝试。我也把它当作一个普通的 Django 网站工作,但现在把它变成一个 API 变得有趣了。
这是我的模型:
class UserIncome(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
preTaxIncome = models.DecimalField(max_digits=15, decimal_places=2)
savingsRate = models.DecimalField(max_digits=3, decimal_places=2)
taxRate = models.DecimalField(max_digits=3, decimal_places=2)
这是我的序列化程序(基本,没有尝试制作外键):
class UserIncomeSerializer(serializers.ModelSerializer):
class Meta:
model = models.UserIncome
fields = ('id', 'user', 'preTaxIncome', 'savingsRate', 'taxRate')
这是视图(再次,只是基础。没有尝试外键):
class UserIncomeList(APIView):
#List all snippets, or create a new snippet.
def get(self, request, format=None):
userIncome = models.UserIncome.objects.get(user=request.user)
serializer = Serializers.UserIncomeSerializer(userIncome, many=False)
return Response(serializer.data)
def post(self, request, format=None):
serializer = Serializers.UserIncomeSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我是否应该将外键设为用户 ID 并以某种方式获取?谢谢!
解决方案
我想到了!
我从序列化程序中删除了用户字段,然后在 UserIncomeList 的 post 方法中创建了 save 方法:
serializer.save(user = request.user)
推荐阅读
- c# - 如何在发布后安装应用程序时修复错误 netfx.force.conflicts
- nginx - 如何在nginx反向代理中重写位置以完美加载owncloud页面?
- r - 不能再从网站上抓取数据
- vue.js - 如何使用计算属性和 Vuex,而不会出现反应性错误
- html - 如何创建宽度相同的 Bootstrap 列?
- reactjs - 尝试使用 Semantic UI React Dropdown 时出现“TypeError: Object(...) is not a function”错误
- postgresql - 如何将递归转换为plpgsql中的函数?
- c# - C# SQL 选择在哪里
LIKE %Column% - 格式? - javascript - 在 Safari IOS12 上禁用双击缩放/调整大小***
- javascript - ChartJS 散点图将最高点和最低点减半