Advertisement
Guest User

Untitled

a guest
Apr 8th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.11 KB | None | 0 0
  1. class SubscriptionModel(models.Model):
  2.  
  3.     subscription_name = models.CharField(_('subscription name'), max_length=50, choices=SUBSCRIPTION, default='F')
  4.  
  5.     def __str__(self):
  6.         return self.subscription_name
  7.  
  8.     def save(self, *args, **kwargs):
  9.         super().save(*args, **kwargs)
  10.  
  11. # The parent model.
  12.  
  13. class UserProfileModel(models.Model):
  14.  
  15.  
  16.     user = models.OneToOneField(User, on_delete=models.CASCADE, default='', related_name='user_instance')
  17.     subscription = models.OneToOneField(SubscriptionModel, related_name='user_subscription', on_delete=models.CASCADE, blank=True, null=True)
  18.  
  19.     # Other fields....
  20.  
  21.     objects = UserProfileManager()
  22.  
  23. # The UserProfileManager() functions.
  24.  
  25.  @transaction.atomic
  26.     def create_user_profile(self, user, subscription):
  27.         password = user.pop('password')
  28.         user = User(**user)
  29.         user.set_password(password)
  30.         user.save()
  31.         subscription = SubscriptionModel(**subscription).save()
  32.         self.create(user=user, subscription=subscription)
  33.         return user
  34.  
  35. # The UserRegistrationSerializer.
  36.  
  37. class UserRegistrationSerializer(serializers.Serializer):
  38.  
  39.     subscription_name = serializers.ChoiceField(choices=SubscriptionModel.SUBSCRIPTION, default='F')
  40.  
  41.    # Other fields...
  42.  
  43.     def get_cleaned_data(self):
  44.         return {
  45.             'username': self.validated_data.get('username', None),
  46.             'first_name': self.validated_data.get('first_name', None),
  47.             'last_name': self.validated_data.get('last_name', None),
  48.             'email': self.validated_data.get('email', None),
  49.             'password': self.validated_data.get('password', None)
  50.         }
  51.  
  52.    def get_subscription_cleaned_data(self):
  53.         return {
  54.             'subscription_name': self.validated_data.get('subscription_name', None)
  55.         }
  56.  
  57.     def save(self, request):
  58.         print(request.data)
  59.         cleaned_data = self.get_cleaned_data()
  60.         subscription = self.get_subscription_cleaned_data()
  61.         user = UserProfileModel.objects.create_user_profile(user=cleaned_data, subscription=subscription)
  62.         return user
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement