0

我使用 OnetoOne 关系扩展了 django admin 用户,

class UserProfile(models.Model):
    USER_TYPE = ( 
                (2, 'SUPER ADMIN'),
                (1, 'ADMIN'),
                (0, 'USER'),
                )
    user = models.OneToOneField(User, related_name='profile', unique=False)
    user_type = models.IntegerField(u'User Type',max_length=1,choices=USER_TYPE,blank=False)

我想做这个。

我不知道如何使用下面的登录用户类型变量,我在 OneToOne 与 django 用户的关系中定义了用户类型。我想查看登录用户是否为 login_user_type == 1 的管理员。

loggedin_user_type = request.User(something here ) 
class UserProfile(models.Model):
    if not logged_in_user_type :
         logged_in_user_type ==2 
    if logged_in_user_type ==  1  :
        USER_TYPE = ( 
                (1, 'ADMIN'),
                (0, 'USER'),
                 )
    else :     
       logged_in_user_type = ( 
               (2, 'SUPER ADMIN'),
               (1, 'ADMIN'),
               (0, 'USER'),
            )
user = models.OneToOneField(User, related_name='profile', unique=False)
user_type = models.IntegerField(u'User Type',max_length=1,choices=USER_TYPE,blank=False)

   Show other type of model
4

1 回答 1

0

使用表单域作为选择字段 一个可以做到这一点

def formfield_for_choice_field(self, db_field, request, **kwargs):
    if db_field.name == "user_type":
        kwargs['choices'] = ( 
            (1, 'ADMIN'),
            (0, 'USER'),
            )

        if request.user.is_superuser:
            kwargs['choices'] += ((2, 'SUPER ADMIN'),)
    return super(UserProfileAdmin, self).formfield_for_choice_field(db_field, request, **kwargs) 
于 2013-07-22T11:06:34.053 回答