2011-02-16 170 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

相關問題