Bulk user import in Django

296 views Asked by At

I like to bulk import users from xlsx or csv to my original User model. I don't use AbstractUser or AbstractBaseUser and I don't like to because my site is working and I don't want to abuse my schema.

I am using the original User model where I add the users (no user registration allowed) and I store the extra fields in my Profile model with a OneToOne relation.

I'm not so experienced so I tried to use code snippets that I found but I am still not able to achieve my goal. If I try to use import-export module in my admin panel it works with other models but not with the User model. Tablib or other solutions would be also interesting to me.

models.py (I'm using the original User model that sends a signal to Profile model when a user is created)

class Profile(models.Model):

def __str__(self):
    return str(self.user)

user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
date = models.DateField(auto_now_add=True, auto_now=False, blank=True)
projekt = models.ForeignKey(Projekt, on_delete=models.CASCADE, default=1)   

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

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

forms.py

class RegisterForm(UserCreationForm):
email = forms.EmailField()

class Meta:
    model = User
    fields = ['username', 'email', 'last_name', 'first_name', 'password1', 'password2']

admin.py

from django.contrib.auth.models import User
from import_export.admin import ImportExportModelAdmin

@admin.register(User)
class UserAdmin(ImportExportModelAdmin):
    pass

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

I got this error message:

django.contrib.admin.sites.AlreadyRegistered: The model User is already registered with 'auth.UserAdmin'.

I understand that my User model is in use but what could I do?

0

There are 0 answers