python - Nested relationships in django rest framework -


i want register new user associated list of categories.

i have table called categories list of unique categories (category id, category name).

i have table called accounts list of users (username, email, password , list of associated categories).

i have table called account_categories mapping between users , categories.

unfortunately when trying create new user receive error provided categories exists. don't want update categories table. want update accounts , account_categories.

what doing wrong?

model.py

class category(models.model):     categoryname = models.charfield(unique=true, max_length=50)      def __str__(self):         return "{0}".format(self.categoryname)  class accountmanager(baseusermanager):     def create_user(self, email, age, categories, password=none, **kwargs):         if not email:             raise valueerror('users must have valid email address.')          if not kwargs.get('username'):             raise valueerror('users must have valid username.')          if not age:             raise valueerror('users must have valid age.')          if not categories:             raise valueerror('users must choose @ least 1 intrest.')          account = self.model(             email=self.normalize_email(email), age=age, categories=categories, username=kwargs.get('username')         )          account.set_password(password)         account.save()          return account      def create_superuser(self, email, age, categories, password, **kwargs):         account = self.create_user(email=email, age=age, categories=categories, password=password, **kwargs)          account.is_admin = true         account.save()          return account  class account(abstractbaseuser):     email = models.emailfield(unique=true)     username = models.charfield(unique=true, max_length=25)     age = models.smallintegerfield()     categories = models.manytomanyfield(category)      objects = accountmanager()      username_field = 'username'     required_fields = ['age', 'email']      def __unicode__(self):         return self.email 

serializers.py

class categoryserializer(serializers.modelserializer):      class meta:         model = category         fields = ('id', 'categoryname')  class accountserializer(serializers.modelserializer):     password = serializers.charfield(write_only=true, required=false)     confirm_password = serializers.charfield(write_only=true, required=false)     categories = categoryserializer(many=true)      class meta:         model = account         fields = ('id', 'email', 'username', 'age', 'categories', 'password', 'confirm_password',)      def create(self, validated_data):         return account.objects.create(**validated_data) 

views.py

class accountviewset(viewsets.modelviewset):     lookup_field = 'username'     queryset = account.objects.all()     serializer_class = accountserializer      def get_permissions(self):         if self.request.method in permissions.safe_methods:             return (permissions.allowany(),)          if self.request.method == 'post':             return (permissions.allowany(),)          return (permissions.isauthenticated(), isaccountowner(),)      def create(self, request):         serializer = self.serializer_class(data=request.data)          if serializer.is_valid():             account.objects.create_user(**serializer.validated_data)              return response(serializer.validated_data, status=status.http_201_created)          return response({             'status': 'bad request',             'message': 'account not created received data. email / username has been used.' + str(serializer.errors) + str(request.data) #+ str(serializer.is_valid())         }, status=status.http_400_bad_request) 

database scheme

http://postimg.org/image/o15ybcf9f/

error

http://postimg.org/image/4i5muo8fz/


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -