google_online
@google_online
My morning begins with coffee and Twitter.

Как создать userlevel после регистрации?

Есть модель UserLevel. После регистрации нужно создать первый левел.
Есть два декоратора в models.py 'create_user_profile' and 'save_user_profile' и сигнал для социалок.


class UserLevel(models.Model):

    level = models.ForeignKey(Level, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    progress = models.IntegerField(default=0)
    access = models.BooleanField(default=False)


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    if created:
        UserProfile.objects.create(user=instance)

@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
    instance.userprofile.save()

@receiver(user_signed_up)
def set_initial_user_names(request, user, sociallogin=None, **kwargs):
    preferred_avatar_size_pixels = 25

    if sociallogin:
        if sociallogin.account.provider == 'google':
            picture_url = sociallogin.account.extra_data['picture']
        if sociallogin.account.provider == 'facebook':     
            picture_url = "http://graph.facebook.com/{0}/picture?width={1}&height={1}".format(
                sociallogin.account.uid, preferred_avatar_size_pixels)

        user.userprofile.avatar_url = picture_url
        user.userprofile.save()

Как создать первый userlevel после регистрации что бы я смог обращаться к нему и получать что то типа этого
{ "id": 8, "progress": 0, "access": true, "level": 1, "user": 3 }
?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
@MAGistr_MTM
Учусь программировать
Так же, как и создаете профиль.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы