将自定义上下文传递给Django模型

时间:2017-03-24 10:20:37

标签: django django-models django-rest-framework

我正在使用django-rest-framework。 我的应用中的所有模型都包含用户字段,我想写入此字段链接到当前用户。 如何将用户对象传递给模型? 我已经厌倦了在SerializerClass中编写用户链接,但我认为这不是最好的解决方案。

在视图中:

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

型号:

class Tracker(models.Model):
    serial_id = models.PositiveIntegerField(unique=True)
    created_by = models.ForeignKey(MyUser)

2 个答案:

答案 0 :(得分:0)

你不必。 DRF可以为您做到这一点。 As here

由于您尚未共享完整的代码,因此我倾向于分享一个非常简单的实现,而无需自己编写大量代码并依赖DRF的能力:

from rest_framework import generics
class MyView(generics.CreateAPIView):
    queryset = Tracker.objects
    serializer_class = TrackerSerializer #Assuming that this is your serializer

    def post(self , request , *args , **kwargs):
        return self.create(request , *args , **kwargs)

DRF将自己处理这些关系。假设您已authenticaton设置,因此request.user不是Anonymous User,此代码可以正常工作。

答案 1 :(得分:0)

要从通用视图中抓取登录用户,您应该使用self.request.user

在视图中:

def perform_create(self, serializer):
    serializer.save(created_by=self.request.user)
相关问题