Я добавил этот код:
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_pic = models.ImageField(upload_to="profile_pics/", blank=True)
def __str__(self):
return self.user.username
@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()
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from .models import Profile
class ProfileInline(admin.StackedInline):
model = Profile
can_delete = False
verbose_name_plural = 'Profile'
fk_name = 'user'
class CustomUserAdmin(UserAdmin):
inlines = (ProfileInline, )
def get_inline_instances(self, request, obj=None):
if not obj:
return list()
return super(CustomUserAdmin, self).get_inline_instances(request, obj)
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
я пытаюсь запустить локальный хост, ноЯ получаю эту ошибку:
<class 'accounts.admin.ProfileInline>: (admin.E202) fk_name 'user' is not a ForeignKey to 'auth.User'.
Примечание: я думал, что это проблема с базой данных, потому что у меня уже было несколько пользователей в пользовательской модели, которые не создали профиль. Я сделал следующие шаги:
1. deleted db.sqlite3 file
2. deleted all files in the all migration folders except __init__.py
3. makemigrations and migrate
Но это не сработало.