Django rest框架将POST数据分配给特定用户
Posted
技术标签:
【中文标题】Django rest框架将POST数据分配给特定用户【英文标题】:Django rest framework assign POST data to specific user 【发布时间】:2017-01-02 11:37:45 【问题描述】:一个月前启动了 Django 和 DRF,但我被困在这部分...我从 android 设备获得了一个 JSON,其中已经包含用户的主键,因此数据被保存给正确的用户。最近我实现了 JWT 令牌认证(来自 Blimp),它的工作就像一个魅力。现在我想删除 JSON 中的主键字段(从 Android 发送)并将数据分配给该登录用户(在 Android 上)。这是一些代码:
models.py
class Izdavatelji(models.Model):
user = models.ForeignKey(User, default=1)
name = models.CharField(max_length=100)
class Obrazac(models.Model):
izdavatelj = models.ForeignKey(Izdavatelji, default='Izdavatelj')
local = models.CharField(max_length=100)
序列化器.py
class ObrazacSerializer(serializers.ModelSerializer):
class Meta:
model = Obrazac
fields = ('local', 'izdavatelj')
DRF views.py
class ObrazacList(generics.ListCreateAPIView):
queryset = Obrazac.objects.all()
serializer_class = ObrazacSerialize
permission_classes = (IsAuthenticated,)
authentication_classes = (JSONWebTokenAuthentication,)
【问题讨论】:
【参考方案1】:class ObrazacSerializer(serializers.ModelSerializer):
izdavatelj = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = Obrazac
fields = ('local', 'izdavatelj')
class ObrazacList(generics.ListCreateAPIView):
queryset = Obrazac.objects.all()
serializer_class = ObrazacSerializer
permission_classes = (IsAuthenticated,)
authentication_classes = (JSONWebTokenAuthentication,)
def perform_create(self, serializer):
izdavatelj = Izdavatelji.objects.get(user=self.request.user)
return serializer.save(izdavatelj=izdavatelj)
向serializes.py
添加一个指向模型关系的字段并覆盖ListCreateAPIView 中的perform_create(self, serializer)
方法似乎可以完成这项工作。
【讨论】:
以上是关于Django rest框架将POST数据分配给特定用户的主要内容,如果未能解决你的问题,请参考以下文章
使用 Django REST 框架进行批量 POST 时检查记录是不是存在
如何使用 objects.filter() 将字典过滤为 django rest 框架中的 POST 方法
Django REST框架:POST请求:仅在数据不存在时如何保存数据