【问题标题】:How do I add an extra field in Django Admin?如何在 Django Admin 中添加额外的字段?
【发布时间】:2019-01-28 01:08:18
【问题描述】:

我刚刚开始使用 Django,并且我刚刚改进了我的项目,因此我使用了一个 AbstractUser 模型,而不是使用基本用户,它在我的 models.py 文件夹中定义

#accounts/models.py

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    # add additional fields in here
    favourite_colour = models.CharField("Favourite Colour", max_length=100)

    def __str__(self):
        return self.email

我还创建了适用于我的注册系统的创建表单

#accounts/forms.py

from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth.models import User
from django import forms
from .models import CustomUser

class CustomUserCreationForm(UserCreationForm):

    class Meta(UserCreationForm.Meta):
        model = CustomUser
        fields = ('username', 'email', 'favourite_colour')

        help_texts = {
                    'username': 'Make something unique',
                    'email': None,
                    }

class CustomUserChangeForm(UserChangeForm):

    class Meta:
        model = CustomUser
        fields = ('username', 'email', 'favourite_colour')

现在我正在尝试编辑管理页面,以便我可以更改用户favourite_colour 属性。到目前为止,我的admin.py 文件中有这个

#accounts/admin.py

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from .forms import CustomUserCreationForm, CustomUserChangeForm
from .models import CustomUser

class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ['username', 'email', 'favourite_colour']

admin.site.register(CustomUser, CustomUserAdmin)

这显示了每个用户的favourite_colour

我的问题是,如何在您单击用户后创建一个字段来编辑此 CustomUser 属性?,例如像这样的 我欢迎任何帮助因为我不太擅长阅读文档。请询问您是否需要在问题中添加更多代码,我之前从未问过 Django 问题

【问题讨论】:

    标签: python django


    【解决方案1】:

    经过一番查看后,我发现了一个fieldsets 选项(link1link2link3)可以在我的CustomUserAdmin 代码中使用。在我的CustomUserAdmin 课程中,我现在拥有:

    class CustomUserAdmin(UserAdmin):
        add_form = CustomUserCreationForm
        form = CustomUserChangeForm
        model = CustomUser
        list_display = ['username', 'email', 'favourite_colour']
    
        fieldsets = UserAdmin.fieldsets + (
                ('Extra Fields', {'fields': ('favourite_colour',)}),
        )
    

    【讨论】:

      猜你喜欢
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2015-06-19
      • 2011-09-23
      • 2019-12-30
      • 2018-01-24
      相关资源
      最近更新 更多