0

我最近使用 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 编号。

2

还。我想知道为什么我在 admin.py 中加载了 UserProfile models.py 文件时不能使用字段集。它只是说该字段不存在。我是否必须以不同于在 django/contrib/auth/admin.py 中看到它工作的方式调用这些字段?

如果您觉得有一种更有效的方法可以做到这一点,请告诉我。

4

1 回答 1

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 在运行时加载,而不是库存模板。

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

于 2009-09-07T22:54:54.597 回答