如何将all_auth / rest_auth用户与某个模型建立关系。与cookie /令牌djagno

时间:2015-12-12 07:35:55

标签: django django-rest-framework django-allauth django-rest-auth

我正在使用all_auth和rest_auth以及Angular。我有一个名为Campaign

的模型
class Campaign(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=100)
    hashtag = models.CharField(max_length=20)
    message = models.CharField(null=True, blank=True, max_length=100)
    sale_limit = models.IntegerField(null=True, blank=True)
    start_date = models.DateField(null=True, blank=True)
    expiry_date = models.DateField(default=now_plus_30)
    product_url = models.CharField(max_length=100)
    created_at = models.DateTimeField(default=datetime.now, blank=True)
    modified_at = models.DateTimeField(auto_now_add=True, blank=True)
    user = models.ForeignKey(User, unique=False)
    def __str__(self):              # __unicode__ on Python 2
        return self.name

和视图

class ListCreateCampaign(APIView):
    """
    List all Campaigns or create one.
    """

    def post(self, request, format=None):
        serializer = CampaignSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我不想从via API传递user_id,如何获取用户详细信息并将其注入request.data

1 个答案:

答案 0 :(得分:0)

可以采用一种方法,通过制作user使序列化程序中的required=False字段可选。然后在调用.save()等序列化程序的.save(user=request.user)方法时传递用户。有关详细信息http://www.django-rest-framework.org/api-guide/serializers/#passing-additional-attributes-to-save