如何处理用户与模型的关联?

时间:2017-11-05 18:11:53

标签: django django-rest-framework

我正在构建一个使用Django的应用程序(以及Django Rest Framework),我想使用Token Based Authentication。我不是100%清楚如何在运行时将用户与我的模型相关联。

所以,I'll receive a POST request in my View

if request.method == 'POST':
    ....
    serializer.save()

然后,the flow will go to the post save receiver

@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
    Token.objects.create(user=instance)

我想在我的模型中,我需要一个对用户的引用。但是如何在视图中获得新用户或现有用户? 我想这将是我的模特:

class UserPostData:
    some_info = models.DateField()
    user = models.OneToOneField(User)

但是如何处理用户与我刚刚保存在视图中的模型的关联?

if request.method == 'POST':
    # get_or_create_user()? But there's no username. It's token based auth
    serializer.save()

1 个答案:

答案 0 :(得分:1)

如果请求已通过身份验证,则可以从请求中提取用户对象。 例如,您可以覆盖序列化程序的方法create并从上下文中获取请求,如下所示:

class UserPostDataSerializer(ModelSerializer):
    ...
    def create(self, validated_data):
        user = self.context['request'].user
        new_model = UserPostData.objects.create(user=user,
                                                **validated_data)
        new_model.save()
        return new_model
    ...