Для создания нового экземпляра модели User и сохранения его в расширенной модели MyUser с использованием CreateView в Django, вам нужно сначала создать соответствующие представления и шаблоны.
1. Создайте представление CreateView для создания нового пользователя:
```python
from django.views.generic.edit import CreateView
from django.contrib.auth.models import User
from users.models import MyUser
class UserCreateView(CreateView):
model = User
template_name = 'user_create.html'
fields = '__all__'
def form_valid(self, form):
user = form.save(commit=False)
my_user = MyUser(user=user, additional_field='value') # Подставьте нужные данные
my_user.save()
return super().form_valid(form)
```
2. Создайте шаблон user_create.html для отображения формы создания пользователя:
```html
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Create User</button>
</form>
```
3. Настройте маршрутизацию URL для вашего представления в файле urls.py:
```python
from django.urls import path
from .views import UserCreateView
urlpatterns = [
path('user/create/', UserCreateView.as_view(), name='user_create'),
]
```
Теперь при посещении страницы `/user/create/` будет отображаться форма создания пользователя, которая сохранит данные в модели MyUser.
Чтобы исправить ошибку "Manager isn't available; 'auth.User' has been swapped for 'users.MyUser'" при создании нового пользователя через встроенную форму UserCreationForm, вам нужно обновить аутентификационную настройку вашего приложения Django.
1. В файле settings.py вашего приложения укажите модель User как MyUser, добавив следующую строку:
```python
AUTH_USER_MODEL = 'users.MyUser'
```
2. Затем выполните миграции, чтобы обновить схему базы данных:
```bash
python manage.py makemigrations
python manage.py migrate
```
Теперь при использовании формы UserCreationForm Django будет использовать модель MyUser вместо стандартной модели User, и ошибка не должна возникать.