¿Cómo puedo hacer que el proceso de registro de usuario de Django en un solo paso (en lugar de dos pasos) con correo electrónico sea obligatorio?

Quiero que Django envíe un correo electrónico a la dirección de correo electrónico del usuario con los detalles de inicio de sesión una vez que el administrador agregue un nuevo usuario al sitio de administración, así que intenté usar las señales de Django para eso, pero solo el registro de usuario de bejan django es un proceso de dos pasos que se notifica primero solo paso y llamada función de correo electrónico sin dirección de correo electrónico (que viene en el segundo paso). Mi código de señal:

def email_new_user(sender, **kwargs):
    if kwargs["created"]:  # only for new users
        new_user = kwargs["instance"]
       send_mail('Subject here', 'Here is the message.', '[email protected]',['[email protected]'], fail_silently=False)


post_save.connect(email_new_user, sender=User)

Así que intenté superar este problema. Uso este código en admin.py

class UserAdmin(admin.ModelAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'date_joined', 'last_login')
    search_fields = ['username', 'email']
    filter_horizontal = ('user_permissions',)

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

Esto hace que todo el proceso de registro sea un proceso de un solo paso y mis señales comienzan a funcionar y a enviar correo a user_id cuando se agrega un nuevo usuari

1. La contraseña del usuario no se convierte en hash y es visible al ingresar al formulario, lo que hace que el usuario no pueda iniciar sesión en el sitio de administración.

2.El campo de correo electrónico en el formulario no es obligatorio, lo que quiero que sea obligatorio.

Por favor, ayúdame :

[EDITAR

I tried your code But I m still at same place where i was before posting this question.
the code i used in my admin.py is:
from django.contrib import admin
from mysite.naturefarms.models import *
from django.contrib.auth.models import User,Group
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django import forms
from django.contrib.admin.views.main import *

class MyUserCreationForm(UserCreationForm):
    class Meta:
        model = User
        fields = ('username', 'email',)
class UserAdmin(admin.ModelAdmin):
    add_form = MyUserCreationForm

admin.site.unregister(User)

class MyUserAdmin(UserAdmin):
    add_form = MyUserCreationForm
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'password1', 'password2')}
        ),
    )




admin.site.register(User, MyUserAdmin)

Respuestas a la pregunta(2)

Su respuesta a la pregunta