UserProfile StackedInLine / TabularInLine经过重新设计

时间:2009-09-07 20:22:46

标签: django tabular inlines stacked

大家好,感谢您阅读。

我有一个简单的问题,我想摆脱,我没有看到 尽管在网上搜索,但实现了这一点的例子 很长一段时间。

我最近使用UserProfile进行了扩展,所以我的admin.py看起来像这样:

from django.contrib import admin
from django.contrib.auth.models import User
from models import UserProfile
from django.contrib.auth.admin import UserAdmin

admin.site.unregister(User)

class UserProfileInline(admin.StackedInline):
                model = UserProfile

class UserProfileAdmin(UserAdmin):
#               fieldsets = [
#                       (None,  {'fields': ['image']}),
#                       ('Avatar', {'fields': ['text'], 'classes': ['collapse']}),
#               ]
                inlines = (UserProfileInline,)

admin.site.register(User, UserProfileAdmin)

和models.py是这样的:

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

class UserProfile(models.Model):
        # Required
        user = models.ForeignKey(User, unique=True)
        image = models.ImageField(upload_to='media/users/', blank=True, help_text="Your face")
        text = models.TextField(blank=True, help_text="Write something about yourself")

In an app called users that is referred to by settings.py with:

    AUTH_PROFILE_MODULE = users.UserProfile

1

基本上我想要实现的是摆脱#1 StackedInLine 在管理员中显示。我之所以使用StackedInLine而不是 TabularInLine是因为否则我得到“删除?”列到 是的,我发现它是可选的,所以我想要排除那个或 摆脱StackedInLine中的#1编号。

这就是“现实世界”中的样子..(标有红色)

叠放: hxxp://i28.tinypic.com/2lsadkg.jpg

表格: hxxp://i27.tinypic.com/4lybs.jpg

2

另外。我想知道为什么我加载时不能使用字段集 admin.py中的UserProfile models.py文件。它只是说场 不存在。我是否必须以与django /中不同的方式调用字段 contrib / auth / admin.py我认为它有用吗?

如果您觉得有更有效的方法,请告诉我。我愿意接受所有答案。

1 个答案:

答案 0 :(得分:4)

1

我觉得你在这里太挑剔了。如果你绝对需要控制这些细节,你应该创建自己的视图,而不是使用管理员。否则堆叠就是你想要的,因为表格对于一对一关系没有多大意义。

2

我已经能够在用户个人资料中使用字段集。我的代码与你的代码之间的唯一区别似乎是我使用的是元组而不是字典。这是我的比较:

class UserProfileInline(admin.StackedInline):
    model = UserProfile

class MyUserAdmin(UserAdmin):
    inlines = [UserProfileInline]
    fieldsets = (
        (None, {'fields': ('username', 'password')}),
        (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
        (_('Permissions'), {'fields': ('is_staff', 'is_active', 'is_superuser')}),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
        (_('Groups'), {'fields': ('groups',)}),
    )
    exclude = ['user_permissions']

修改

我刚刚进行了快速检查,“#1”来自管理模板。

这意味着您可以通过覆盖库存管理模板轻松删除它,但这会影响您的所有内联,包括一对多的内联。

可以在django/contrib/admin/templates/admin/edit_inline/stacked.html

中找到堆叠的内嵌模板

这意味着您可以将模板复制到您自己的模板目录templates/admin/edit_inline/stacked.html,这将由Django在运行时加载而不是库存模板。

复制后,编辑本地副本以删除第9行的#{{ forloop.counter }}