Eu tenho um modelo com propriedades personalizadas. No meu admin eu exibo o valor de retorno do modelo. Os valores de retorno de todas as propriedades começam com as seguintes palavras em cada registro.
<QuerySet [
Eu estou tentando me livrar do <QuerySet [
de aparecer em todos os registros, como mostrado na imagem? Quando exibo o valor de retorno de get_followers, get_following, get_friends, todos os valores de retorno contêm <QuerySet [
Alguma ideia de como posso fazer isso?
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"),
)
Respostas:
2 para resposta № 1Quando você faz u"%s" % self.get_related_to(RELATIONSHIP_FOLLOWING)
você está usando o repr()
do queryset, que inclui o <QuerySet [
que você não quer.
Uma alternativa para obter uma lista de sequências para os itens no conjunto de consultas e uni-las:
def get_followers(self):
return ", ".join(str(x) for x in self.get_related_to(RELATIONSHIP_FOLLOWING)))
Se você realmente usar o queryset em outro lugar em seu código, crie um método separado (por exemplo, get_friends_display
), e use o novo método no seu modelo admin "s list_display
.
def get_friends_display(self):
return ", ".join(str(x) for x in self.get_friends())