我正在使用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)
答案 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)