Also check out this thread where I answered a similar question:
https://groups.google.com/d/msg/django-users/W5uCKzWOnuE/Ang4RFK0BCYJ

-James

On Thu, Jul 9, 2015 at 1:16 PM, Carlton Gibson <[email protected]> wrote:
> Hi Daniel,
>
> The call to get_object won't work, since Create views don't yet have an
> object to fetch.
>
> The correct approach is override perform_create and pass the user to your
> serialiser's save method.
>
> There's a section in the tutorial that covers this exact use case:
>
> http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/#associating-snippets-with-users
>
> Check it out. Hopefully that helps.
>
> Also you may find more luck with DRF related questions on the DRF mailing
> list itself:
>
> https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
>
> Kind Regards, Carlton
>
> —
>
>
>
> On Thu, Jul 9, 2015 at 7:44 PM, Daniel Grace <[email protected]> wrote:
>>
>> With CreateAPIView from the REST API I am trying to stop users from
>> creating data in another users name.
>>
>> In models.py:
>> class UserData(models.Model):
>>     user = models.OneToOneField(User, db_index=True,
>> related_name='userdata', blank=False, null=False)
>>     textdata = models.TextField(blank=True, null=True)
>>
>> In views.py:
>> class UserDataCreateView(generics.CreateAPIView):
>>     permission_classes = [permissions.IsAuthenticated]
>>     serializer_class = UserDataSerializer
>>     queryset = UserData.objects.all()
>>     def create(self, request, *args, **kwargs):
>>         instance = self.get_object()
>>         if instance.user != request.user:
>>             raise PermissionDenied
>>         return super(UserDataCreateView, self).create(request, *args,
>> **kwargs)
>>
>> Gives the error:
>> Expected view UserDataCreateView to be called with a URL keyword argument
>> named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the
>> view correctly.
>>
>> What am I doing wrong?  Alternatively, how would I set the user ID on the
>> newly created record without saving twice (which would not be a good idea) ?
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/django-users.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/django-users/58f8053e-c13e-4d45-b480-e6b53abb1ea4%40googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/1436472988413.9e4a408a%40Nodemailer.
>
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CA%2Be%2BciU-%3DBEtdFBCtLO0W82q1s52X4Q2CyP6UMB%3DZMOjnhSoZw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to