Я использую AbstractUser для расширения встроенной пользовательской модели.Затем я использую UserCreateForm для создания добавления пользователей в приложение.Когда я добавляю свои настраиваемые поля, которые я создал, в «fields = []», встроенные поля имени пользователя и пароля в визуализированной форме начинают автозаполнение, как при входе в систему, когда я удаляю свои настраиваемые поля, он возвращается к обычному состоянию
Ссылка на изображение без отображения пользовательских полей при желании https://imgur.com/JFGswFN
ссылка на изображение с отображением пользовательских полей с проблемой https://imgur.com/rlZI032
Возможно, сначала нужно скопировать вставленные изображения в веб-браузер.Время размещения здесь и не удалось выяснить, как загрузить изображение или получить ссылку на работу.
Я попробовал следующее, но ничего из этого не работает:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].widget.attrs.update({
'autocomplete': 'off'})
<form method="POST" autocomplete='off' novalidate>
, а также попытался добавить его в раздел виджетов в классе Meta для полей username и password1.
models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils.text import slugify
import string
class Department(models.Model):
department = models.CharField(max_length=30, unique=True)
slug = models.SlugField(unique=True)
class Meta:
ordering = ['department']
def save(self, *args, **kwargs):
self.slug = slugify(self.department)
self.department = self.department.title()
super(Department, self).save()
def __str__(self):
return self.department
class CustomUser(AbstractUser):
remote_login = models.BooleanField(null=True, default=False)
department = models.ForeignKey(
Department, on_delete=models.SET_NULL, null=True)
def __str__(self):
return self.username
views.py
from django.shortcuts import get_object_or_404, render
from django.views.generic import CreateView, DeleteView, UpdateView, DetailView, ListView
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from .models import CustomUser, Department
from django.urls import reverse_lazy
from .forms import *
class UserCreateView(LoginRequiredMixin, CreateView):
template_name = 'users/user_accounts/user_create.html'
form_class = CustomUserCreationForm
success_url = reverse_lazy('active_users')
form.py
from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import CustomUser
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = CustomUser
fields = ['first_name',
'last_name',
'email',
'department',
'username', ]
user_create.html
{% block title %}Create User{% endblock title %}
{% block user_content %}
<form method="POST" action='' novalidate>
{% csrf_token %}
<div class='container mt-5'>
<div class="row justify-content-center">
<div class="col-6">
<div class="card">
<div class="card-body">
<h2 class="text-center display-4">Create User</h2>
{% include 'formbase.html' %}
<button name='submit' type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</div>
</div>
</div>
</form>
formbase.html
{% load widget_tweaks %}
{% for hidden_field in form.hidden_fields %}
{{ hidden_field }}
{% endfor %}
{% if form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
{% for field in form.visible_fields %}
<div class="form-group">
{{ field.label_tag }}
{% if form.is_bound %}
{% if field.errors %}
{% render_field field class="form-control is-invalid" %}
{% for error in field.errors %}
<div class="invalid-feedback font-weight-bold">
{{ error }}
</div>
{% endfor %}
{% else %}
{% render_field field class="form-control is-valid" %}
{% endif %}
{% else %}
{% render_field field class="form-control" %}
{% endif %}
{% if field.help_text %}
<small class="form-text text-muted">{{ field.help_text }}</small>
{% endif %}
</div>
{% endfor %}