Задать вопрос
@nikidreiks

Django регистрация | Как убрать выбор профиля для нового пользователя?

После регистрации пользователя и дальнейшей его авторизации у него ограниченный доступ к загрузке изображения, вообще не может ничего загрузить. Но после добавления профиля через админку у пользователя появляются права на загрузку любых изображений. Как убрать "выбор профиля" для новых зарегистрированных пользователей? Чтобы самому вручную этим не заниматься.

64208d403d874104067440.png
64208d49f2660370758150.png

models.py

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone



class Profile(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE)
  bio = models.CharField(default='Привет, всем!', max_length=100)
  image = models.ImageField(default='def_user.png')

  def str(self):
    return f'Профиль {self.user.username}'

  def following(self):
    user_ids = Relationship.objects.filter(from_user=self.user)\
                    .values_list('to_user_id', flat=True)
    return User.objects.filter(id__in=user_ids)


  def followers(self):
    user_ids = Relationship.objects.filter(to_user=self.user)\
                    .values_list('from_user_id', flat=True)
    return User.objects.filter(id__in=user_ids)



class Post(models.Model):
  timestamp = models.DateTimeField(default=timezone.now)
  content = models.TextField()
  user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='posts')


  class Meta:
    ordering = ['-timestamp']

  def str(self):
    return self.content


class Relationship(models.Model):
  from_user = models.ForeignKey(User, related_name='relationships', on_delete=models.CASCADE)
  to_user = models.ForeignKey(User, related_name='related_to', on_delete=models.CASCADE)

  def str(self):
    return f'{self.from_user} to {self.to_user}'
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
deepblack
@deepblack Куратор тега Django
Вот ты зачем то кастомизировал стандартную модель пользователя,
Но почему то не осилил прикрутить сюда сигнал (раз, два) который будет ожидать создания User и автоматом создавать Profile.

Пример, как это выглядит:
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)
    # тут если надо что-то делаем с моделью 
    instance.profile.save()


Остальное легко нагуглишь )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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