Джанго: скрытые / потерянные значения oneToOneField - PullRequest
0 голосов
/ 13 мая 2018

Когда я запускаю в manage.py shell qs = UserProfile.objects.all(); qs.count(), я получаю 18 экземпляров.Однако, когда я смотрю на администратора моей веб-страницы в UserProfile, я вижу только 6 пользователей.Я могу просмотреть пользователей и вывести полное имя for i in qs: print(i.user.full_name), оно печатает полное имя первых 6, а затем выдает ошибки с этой ошибкой: AttributeError: у объекта 'UserProfile' нет атрибута '_user_cache'

Я думаю, что яиметь несколько (12) элементов в UserProfile, которые не связаны с профилем пользователя.Они не отображаются в админке, поэтому я не знаю, как их удалить.Кто-нибудь знает, как я могу удалить их из командной строки или почему они могут быть там в первую очередь?Я бы хотел, чтобы такие вещи не были осиротевшими.Каждый должен относиться к пользователю.По крайней мере, он должен отображаться на вкладке администратора!

models.py

class UserProfile(models.Model):
    user                = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)

class User(AbstractBaseUser):
    ...

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Вы можете удалить его так:

# this command open the shell
python manage.py shell


# then import your model
from your_app.models import UserProfile

# then check command
# it must return 12
print(UserProfile.objects.filter(user_id__isnull=True).count())

# if print return 12 you should do it to delete user_profiles
UserProfile.objects.filter(user_id__isnull=True).delete()
0 голосов
/ 13 мая 2018

Вы можете удалить эти записи, используя фильтр isnull.В командной строке запустите django shell:

>python manage.py shell

in в типе оболочки:

>from you_app_name.models import UserProfile

>UserProfile.objects.filter(user__isnull=True).delete()
...