Skip to main content
 首页 » 编程设计

python之获取对象但无法访问属性

2025年05月04日22powertoolsteam

检索用户对象时设置如下:

class User(models.Model): 
    """ 
    User model 
    """ 
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False) 
    email = models.EmailField(max_length=255, null=True, default=None) 
    password = models.CharField(max_length=255, null=True, default=None) 
    ACCOUNT_CHOICE_UNSET = 0 
    ACCOUNT_CHOICE_BRAND = 1 
    ACCOUNT_CHOICE_CREATOR = 2 
    ACCOUNT_CHOICE_AGENCY = 3 
    ACCOUNT_CHOICES = ( 
        (ACCOUNT_CHOICE_UNSET, 'Unset'), 
        (ACCOUNT_CHOICE_BRAND, 'Brand'), 
        (ACCOUNT_CHOICE_CREATOR, 'Creator'), 
        (ACCOUNT_CHOICE_AGENCY, 'Agency'), 
    ) 
    account_type = models.IntegerField(choices=ACCOUNT_CHOICES, default=ACCOUNT_CHOICE_UNSET) 
 
    class Meta: 
        verbose_name_plural = "Users" 
 
    def __str__(self): 
        return "%s" % self.email 

通过以下方式:

        try: 
            user = User.objects.get(email=request.data['email']) 
        except User.DoesNotExist: 
            response_details = { 
                    'message': "Invalid email address.", 
                    'code': "400", 
                    'status': HTTP_400_BAD_REQUEST 
            } 
            return Response(response_details, status=response_details['status']) 

为什么在尝试打印时只能查看 email 属性?我还需要能够访问 account_type 属性。

    if user: 
        print(user) 

请您参考如下方法:

您可以为此修改模型的 __str__ 方法:

def __str__(self): 
    return "%s %s" % (self.email, self.account_type) 

要在管理页面上只保留电子邮件,您需要自定义管理类。将此添加到 admin.py 文件:

from django.contrib import admin 
from .models import User 
 
class UserAdmin(admin.ModelAdmin): 
    list_display = ('email') 
 
admin.site.register(User, UserAdmin)