如何从django

时间:2017-07-19 13:40:26

标签: django django-models django-admin

我有一个包含自定义属性的模型。在我的管理员中,我显示模型的返回值。所有属性的返回值都以每条记录中的以下单词开头。

<QuerySet [

我试图摆脱<QuerySet [出现在图片中显示的每条记录中? 当我从get_followers,get_following,get_friends显示返回值时,所有返回值都包含<QuerySet [

知道我该怎么做吗?

enter image description here

class Application(TimeStampModel):
name = models.CharField(verbose_name='CI Name', max_length=100, unique=True)
relationships = models.ManyToManyField('self', through='Relationship',
                                       symmetrical=False,
                                       related_name='related_to')

def get_following(self):

    return self.get_relationships(RELATIONSHIP_FOLLOWING)


def get_followers(self):
    return u'%s' % self.get_related_to(RELATIONSHIP_FOLLOWING)

def get_friends(self):

    return self.relationships.filter(
        to_apps__status=RELATIONSHIP_FOLLOWING,
        to_apps__from_application=self,
        from_apps__status=RELATIONSHIP_FOLLOWING,
        from_apps__to_application=self)

def __str__(self):
    return "{}".format(self.name)

RELATIONSHIP_FOLLOWING = 1
RELATIONSHIP_BLOCKED = 2
RELATIONSHIP_STATUSES = (
    (RELATIONSHIP_FOLLOWING, 'Following'),
    # Following: denotes the relationship from the user, i.e. following
    (RELATIONSHIP_BLOCKED, 'Blocked'),
    )

1 个答案:

答案 0 :(得分:2)

当您执行u'%s' % self.get_related_to(RELATIONSHIP_FOLLOWING)时,您使用的是查询集的repr(),其中包含您不想要的<QuerySet [

获取查询集中项目的字符串列表的替代方法,并将它们连接在一起:

def get_followers(self):
    return ", ".join(str(x) for x in self.get_related_to(RELATIONSHIP_FOLLOWING)))

如果您实际在代码中的其他位置使用查询集,则创建单独的方法(例如get_friends_display),并在模型管理员list_display中使用新方法。

def get_friends_display(self):
    return ", ".join(str(x) for x in self.get_friends())