Django queryset to string在测试中不返回字符串

Django queryset to string在测试中不返回字符串,django,django-rest-framework,django-testing,django-tests,Django,Django Rest Framework,Django Testing,Django Tests,我正在尝试为此模型编写一个单元测试: ADMIN=1 完整用户=2 有限用户=3 班级角色(models.Model): """ 该类存储模型以存储将用于分配权限的不同角色 给用户。 """ 角色选择=( (ADMIN,'ADMIN'), (完全用户,'完全用户'), (受限用户,“受限用户”) ) id=models.PositiveSmallIntegerField(选项=ROLE\u选项,主键=True) name=models.CharField('name',最大长度=30) 定义(自

我正在尝试为此模型编写一个单元测试:

ADMIN=1
完整用户=2
有限用户=3
班级角色(models.Model):
"""
该类存储模型以存储将用于分配权限的不同角色
给用户。
"""
角色选择=(
(ADMIN,'ADMIN'),
(完全用户,'完全用户'),
(受限用户,“受限用户”)
)
id=models.PositiveSmallIntegerField(选项=ROLE\u选项,主键=True)
name=models.CharField('name',最大长度=30)
定义(自我):
“”“表示模型对象的字符串。”“”
如果self.name:
返回self.name
返回self.id
所以我写了这个测试:

来自example.models导入角色
从rest_framework.test导入APITestCase
类RoleModel(APITestCase):
fixtures=[“initial_data/role.json”]
def test_get_admin_角色(自我):
role=role.objects.filter(id=1)
self.assertEqual(str(角色),'admin')
但我不明白为什么它会失败:

AssertionError: '<QuerySet [<Role: admin>]>' != 'admin'
- <QuerySet [<Role: admin>]>
+ admin
断言错误:“”!='管理员
- 
+管理员

我读过关于如何获取queryset的字符串的类似问题,它应该是
中定义的字符串。但我不知道为什么它被
包围,你的
角色是
角色的
查询集(集合)。一个集合可以包含、零个、一个或多个
角色
s。集合与对象不同

您可以通过以下方式获得
角色
对象:

def test_get_admin_role(self):
    role = Role.objects.get(id=1)
    self.assertEqual(str(role), 'admin')
def __str__(self):
    """String for representing the Model object."""
    if self.name:
        return self.name
    return str(self.id)