0

Я использую all_auth и rest_auth вместе с Angular. У меня есть модель под названием кампанииКак установить отношение с пользователем all_auth/rest_auth к какой-либо модели. с cookie/token djagno

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) 

Я не хочу, чтобы пройти через user_id от API, как я могу получить информацию о пользователе и ввести его в request.data

+0

Вы можете получить доступ к текущему пользователю из 'request.user'. –

ответ

0

Один подход может быть, сделать user поле необязательно в сериализаторе, делая required=False. Затем передайте пользователя при вызове метода последовательного ввода .save(), например .save(user=request.user). Для получения дополнительной информации http://www.django-rest-framework.org/api-guide/serializers/#passing-additional-attributes-to-save

Смежные вопросы