在Django-Rest框架中,如何将登录用户自动分配给post?

2024-10-02 22:28:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个模型来发布广告。由于CreateApiView受到保护,因此只有登录用户才能创建或发布广告,但是如果登录用户发布广告,如何自动使用登录用户名或将该用户分配给他的广告?在

这是我在我的视图集中尝试的

def perform_create(self, serializer):
    return serializer.save(owner=self.request.user)

这是我的模型.py在

^{pr2}$

这是我的序列化程序.py在

^{3}$

这是我的视图集

class KhashiCreateApiView(generics.CreateAPIView):
    queryset = Add.objects.all()
    serializer_class = KhashiSerializer

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

我在这个端点http://127.0.0.1:8000/api/khashi/khashi_add中得到这个错误

OperationalError at /api/khashi/khashi_add
table add_khashi_add has no column named user_id

是否有任何方法可以将用户分配给post,以便在未提供user的Postman中,如果post request将自动分配登录用户或具有授权头中提供的令牌的用户??在


Tags: 用户py模型selfaddrequestsavedef
1条回答
网友
1楼 · 发布于 2024-10-02 22:28:21

好吧,我自己想办法。。。。 我只是更新我的序列化程序.py使用验证方法

class KhashiSerializer(serializers.ModelSerializer):
class Meta:
    model = Add
    fields = '__all__'
    read_only_fields = ['user']

def validate(self, attrs):
    attrs['user'] = self.context['request'].user
    return attrs

相关问题 更多 >