我正在使用基本的Django Auth用户进行用户处理,并且可以进行身份验证。现在,我正在尝试为我的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并以某种方式获取它吗? 谢谢!
答案 0 :(得分:2)
我知道了!
我从序列化程序中删除了用户字段,然后在UserIncomeList的post方法中创建了save方法:
serializer.save(user = request.user)