2011-02-16 172 views
1

预先填充最模型领域的管理(用于生成蛞蝓有用),似乎如果你使用是直截了当:如何预先填充Django管理员中的UserProfile字段?

prepopulated_fields = {"slug": ("name",)} 

但是当我使用下面的代码来尝试预填充用户配置领域,它给这个错误信息,尽管我在UserProfile模型中显然有一个slu slu。 (这只是找错了模型,我不知道如何解决这个问题...)

错误:

ImproperlyConfigured at /admin/
'UserProfileAdmin.prepopulated_fields' refers to field 'slug' that is missing from model 'User'.

在settings.py:

AUTH_PROFILE_MODULE = 'myapp.UserProfile' 

在模型中。潘岳:

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    slug = models.SlugField(max_length=50) 

在admin.py:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    max_num = 1 
    can_delete = False 

class UserProfileAdmin(admin.ModelAdmin): 
    inlines = [UserProfileInline] 
    prepopulated_fields = {"slug": ("name",)} 

admin.site.unregister(User) 
admin.site.register(User, UserProfileAdmin) 

任何人都可以在这里找到错误原因吗?

回答

2

slug是在UserProfile一个场,但prepopulated_fields = {"slug": ("name",)}UserProfileAdmin的属性,它被施加到User

prepopulated_fields触发一些javascript,它会自动生成一个SlugField的值,该值来自同一模型的某些其他字段的值。你正在尝试的是预填充不同型号的字段UserProfileAdmin应用于Userprepopulated_fields涉及模型User未知的字段slug。它在UserProfile中定义。

这就是为什么我认为这里最大的问题是UserProfileAdmin这应该是UserAdmin。不要混淆应用prepopulated_fields的模型与内联的模型。即使存在OneToOne关系,它仍然是一个不同的模型。

+0

slug字段在UserProfile中,名称字段在User中。即使我为每个模型创建或重命名管理类,仍然无法解决我试图将预填充字段基于不同模型的问题。我收到错误消息:'UserAdmin.prepopulated_fields'指模型'User'中缺少的字段'slug'。 – fieryred 2011-02-27 16:06:33

相关问题