python - Django REST: create CRUD operations for OneToOne Field -


i'm trying create basic crud operations onetoone field. user not required set profile when signing in. how create/update/delete profile when needed (assuming user in db)?

my models default user models django rest and:

class userprofile(models.model):         user = models.onetoonefield(user)         location = models.charfield(max_length=50,blank=true)         title = models.charfield(max_length=80,blank=true)         #picture = models.imagefield(upload_to='user_imgs', blank=true)         website = models.urlfield(blank=true) 

my viewsets are:

class userviewset(viewsets.modelviewset):     queryset = user.objects.all()     serializer_class = userserializer     filter_fields = ['id', 'username', 'email', 'first_name', 'last_name']  class userprofileviewset(viewsets.modelviewset):     queryset = userprofile.objects.all()     serializer_class = userprofileserializer     filter_fields = ['user_id', 'location', 'title', 'website'] 

and serializes:

class userserializer(serializers.hyperlinkedmodelserializer):     class meta:         model = user         email = serializers.emailfield()         fields = ('id','username', 'email', 'first_name', 'last_name')   class userprofileserializer(serializers.hyperlinkedmodelserializer):     user_id = serializers.charfield(source='user.id')      class meta:         model = userprofile         fields = ('user_id', 'location','title','website') 

i belive want restrict profile creation current logged in user. can filter queryset of profiles current user, way user's profile accessible logged in user.

class userviewset(viewsets.modelviewset):     queryset = user.objects.all()     serializer_class = userserializer     filter_fields = ['id', 'username', 'email', 'first_name', 'last_name']   class userprofileviewset(viewsets.modelviewset):     queryset = userprofile.objects.all()     serializer_class = userprofileserializer     filter_fields = ['user_id', 'location', 'title', 'website']      def get_queryset(self):         return super(userprofileviewset, self).get_queryset().filter(             user=self.request.user)      def perform_create(self, serializer):         serializer.save(user=user) 

you make user field read , being saved in above method perform_create , assigned current user.

class userprofileserializer(serializers.hyperlinkedmodelserializer):     class meta:         model = userprofile         fields = ('user', 'location','title','website')         read_only_fields = ('user',) 

Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -