Django使用自定义和字段顺序扩展用户

时间:2015-08-01 20:45:33

标签: django django-models django-admin

我使用module.py中的新字段扩展了User模块。

class Coach(models.Model):
    user = models.OneToOneField(User);
    address=models.CharField(max_length=100);
    address2=models.CharField(max_length=100);
    zip= models.CharField(max_length=5);
    city= models.CharField(max_length=100);
    canton= models.CharField(max_length=50);
    country= models.CharField(max_length=50);
    prefix=models.CharField(max_length=5);
    telephone=models.CharField(max_length=30);
    language=models.CharField(max_length=20);

    def __unicode__(self):
        return self.user.username

def create_user_profile(sender, instance, created, **kwargs):
    if created:
        Coach.objects.create(user=instance)

post_save.connect(create_user_profile, sender=User)

我添加了这个来连接用户模型和admin.py中的新字段:

class UserProfileInline(admin.StackedInline):
    model = Coach
    can_delete = False
    verbose_name_plural = 'profile'

# Define a new User admin
class UserAdmin(UserAdmin):
    inlines =[ UserProfileInline, ]

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

我的问题是管理员用户模型中显示的字段的顺序。下图显示了当前状态,组('profile')新添加的字段位于页面顶部第一张图片: http://www.dodaj.rs/f/1v/3c/1brWQwyO/change-order.png

这就是我想要的: http://www.dodaj.rs/f/3f/10J/25qz2FSW/change-order2.jpg

2 个答案:

答案 0 :(得分:0)

class UserAdmin(UserAdmin):

    fieldsets = (
        ('', {
            'fields': ('password', 'last_login', 'groups', 'more_fields...',),
        }),
    )
    inlines =[ UserProfileInline, ]

答案 1 :(得分:0)

感谢您的回答。

我找到了一种方法,我只是修改模板。默认情况下,admin / template / change_form.html命令显示inline_field_sets中的第一个字段,然后是field_sets。

我刚刚更改了顺序,我已经设置为首先渲染field_sets,然后是inline_field_sets。

<intercept-url pattern="/login*" access="permitAll" />    
<intercept-url pattern="/**" access="isAuthenticated()" />