【问题标题】:How to implement admin meta fields in Django 1.3 User profile?如何在 Django 1.3 用户配置文件中实现管理元字段?
【发布时间】:2011-11-11 00:15:36
【问题描述】:
from django.db import models
from django.contrib.auth.models import User

class MySiteProfile(models.Model):
    # This is the only required field
    user = models.ForeignKey(User, unique=True)

    # The rest is completely up to you...
    favorite_band = models.CharField(max_length=100, blank=True)
    favorite_cheese = models.CharField(max_length=100, blank=True)
    lucky_number = models.IntegerField()

问题是 User._meta.adminMySiteProfile._meta.admin 都返回 NoneType。我已经删除并重新创建了整个数据库,但管理面板中没有出现新字段; AUTH_PROFILE_MODULE 已设置。

【问题讨论】:

    标签: django


    【解决方案1】:

    有几种方法可以让您的 MySiteProfile 显示在管理员中。一种是简单地向管理员注册您的模型,它会显示在它所在的应用名称下。

    另一种方法是从管理员中注销 contrib 用户,然后加载您的:

    #admin.py
    from django.contrib import admin
    from django.contrib.auth.admin import UserAdmin
    from django.contrib.auth.models import User
    from my_app.models import MySiteProfile
    
    class MySiteProfileAdmin(UserAdmin):
      def __init__(self,*args,**kwargs):
        super(MySiteProfileAdmin).__init__(*args,**kwargs)
        fields = list(UserAdmin.fieldsets[0][1]['fields'])
        fields.append('favorite_band')
        fields.append('favorite_cheese')
        fields.append('lucky_number')
        UserAdmin.fieldsets[0][1]['fields']=fields
    
    admin.site.unregister(User)
    admin.site.register(MySiteProfile, MySiteProfileAdmin)
    

    关于这个主题有很多文章,但希望对您有所帮助。

    【讨论】:

    猜你喜欢
    • 2012-07-07
    • 2012-09-30
    • 2013-06-19
    • 2023-03-30
    • 2017-04-26
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多