【问题标题】:Issue while adding inline user profile form with Django admin user form使用 Django 管理员用户表单添加内联用户配置文件表单时出现问题
【发布时间】:2018-07-27 20:38:05
【问题描述】:

我在 django 项目中遇到了一个小问题,希望我能在这里得到一些好的答案。

我通过执行如下代码在 django 用户表单中添加了用户配置文件内联表单:

from django.core.exceptions import ValidationError
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import UserChangeForm, UserCreationForm
from django.contrib.auth.models import User
from djangocalendar.models import UserProfile

from tableapp.models import *
from djangocalendar.models import *
from django import forms

class UserProfileInline(admin.StackedInline):
    model = UserProfile
    can_delete = True
    verbose_name_plural = 'profile'


class MyUserChangeForm(UserChangeForm):
    def clean_first_name(self):
        if self.cleaned_data["first_name"].strip() == '':
            raise ValidationError("First name is required.")
        return self.cleaned_data["first_name"]

    def clean_last_name(self):
        if self.cleaned_data["last_name"].strip() == '':
            raise ValidationError("Last name is required.")
        return self.cleaned_data["last_name"]


# Define a new User admin
class MyUserAdmin(UserAdmin):
    form = MyUserChangeForm
    inlines = UserProfileInline,


# Register your models here
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

我面临的问题,这个内联出现在用户添加表单和更改用户表单中。我不希望它在添加用户时显示。

Like 在此屏幕截图中:内联表单与添加用户表单一起出现!我不希望它在这里添加内联表单。但我想在使用其他表单(如个人表单、信息表单)编辑用户时显示内联表单。

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    我找到了解决办法

    定义一个新的用户管理员

    class MyUserAdmin(UserAdmin):
        form = MyUserChangeForm
        inlines = UserProfileInline,
    
        def get_inline_instances(self, request, obj=None):
            if not obj:
                return list()
            return super(MyUserAdmin, self).get_inline_instances(request, obj)
    

    【讨论】:

      猜你喜欢
      • 2011-04-13
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2021-08-14
      • 1970-01-01
      • 2019-12-02
      • 2012-09-30
      相关资源
      最近更新 更多