Как отобразить first_name в базе данных на django

`views.py

from allauth.account.views import SignupView
from .forms import HODSignUpForm

class HodSignUp(SignupView):

template_name = 'account/signup.html'
form_class = HODSignUpForm
redirect_field_name = ''
view_name = 'hod_sign_up'

def get_context_data(self, **kwargs):
ret = super(HodSignUp, self).get_context_data(**kwargs)
ret.update(self.kwargs)
return ret

forms.py

from .models import Admin
from po.models import User
from allauth.account.forms import SignupForm

class HODSignUpForm(SignupForm):
first_name=forms.CharField(required=False)
last_name=forms.CharField(required=False)

class Meta:
model= Admin
fields = ['first_name','last_name']

def save(self,request):
user = super(HODSignUpForm, self).save(request)
user.is_hod = True
user= User(first_name=self.cleaned_data.get('first_name'),
last_name=self.cleaned_data.get('last_name'))
user.save()
return user

models.py

from po.models import User
class Admin(models.Model):
user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
first_name = models.CharField(max_length=30, db_column='first_name')
last_name = models.CharField(max_length=30, db_column='last_name')

po.models.py

from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
is_active = models.BooleanField(default=True)
is_hod= models.BooleanField(default=False)
first_name = models.CharField(null=True, max_length=50)
last_name=models.CharField(null=True, max_length=50)
admin.py

from po.models import User

class Schooladmin(admin.ModelAdmin): list_display = ("id", "is_active", "is_hod", "first_name", "last_name") list_filter = ("is_active", "is_hod") add_fieldsets = ( ('Личная информация', { 'fields': ('first_name', 'last_name') }), )

admin.site.register(User,Schooladmin)

введите описание изображения здесь я хочу, чтобы это изображение показывало имя, но как показать имя и фамилию в базе данных?

Добавьте verbose_name при создании класса:

first_name = models.CharField(max_length=30, db_column='first_name', verbose_name='Name')

Или вы можете добавить класс Meta к моделям и использовать метки:

labels = {
    'first_name': 'Name'
}

Попробуйте это:

from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
    list_display = ('is_active', 'is_hod', 'first_name', 'last_name')

и

from po.models import User
class Admin(models.Model):
     user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
     first_name = models.CharField(max_length=30, db_column='first_name', verbose_name='Name')
    last_name = models.CharField(max_length=30, db_column='last_name')
    is_active = models.BooleanField(default=True)
    is_hod= models.BooleanField(default=False)

forms.py:

from .models import Admin
from po.models import User
from allauth.account.forms import SignupForm

class HODSignUpForm(SignupForm):

    class Meta(SignupForm.Meta):
        model= Admin
        fields = ['first_name','last_name']

        labels = {'first_name': 'Name'}

        def save(self,request):
            user = super(HODSignUpForm, self).save(request)
            user.is_hod = True
            user= User(first_name=self.cleaned_data.get('first_name'),
            last_name=self.cleaned_data.get('last_name'))
            user.save()
        return user
Вернуться на верх