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

Django extending user with custom and order of fields

我在 module.py 中用新字段扩展了用户模块。

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

class UserAdmin(UserAdmin):

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

感谢您的回答。

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

我只是改了顺序,我设置先渲染field_sets,再渲染inline_field_sets。

    {% block field_sets %}
    {% for fieldset in adminform %}
        {% include "admin/includes/fieldset.html" %}
    {% endfor %}
    {% endblock %}

    {% block inline_field_sets %}
    {% for inline_admin_formset in inline_admin_formsets %}
        {% include inline_admin_formset.opts.template %}
    {% endfor %}
    {% endblock %}