检索用户对象时设置如下:
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)
