Eu gostaria de alterar o comportamento padrão de como a barra lateral de alterações recentes do administrador exibe o nome dos "objetos" adicionados. Consulte a imagem abaixo:
Eu gostaria de mudar a forma como eles são nomeados no Admin. Idealmente, gostaria de poder alterá-lo de "Objeto MyModelName" para, como no exemplo de objeto "Política", algo como "Política: {{valor do campo" Nome da política "da política.}}.
Eu estava pensando que __unicode__
meu modelo de paciente lidou com isso, mas não parece. Qualquer ajuda é apreciada.
django
django-models
django-admin
patrickn
fonte
fonte
__unicode__
faz isso. Cole seu código para que possamos ver o que há de errado__unicode__
não funcionou para mim no Python 3. No entanto,__str__
funcionou conforme documentado na resposta abaixoRespostas:
__unicode__
faz isso. Seu modelo deve ser semelhante a este:No Python 3, você precisa usar
__str__
:fonte
O uso do
__str__
método funciona em Python3 e Django1.8:fonte
A string que você está vendo vem do
__unicode__
método, como outros mencionaram. Mas o fato é que o administrador salva a representação de string de um objeto quando ele cria o evento de registro, portanto, se você adicionar__unicode__
implementação depois que a entrada de registro foi salva, você não verá novos títulos em itens antigos, somente depois de fazer alguma nova atividadefonte
As respostas mencionando
__str__
e__unicode__
métodos estão corretos. Conforme declarado nos docs No entanto, desde a versão 1.6 (eu acho), você pode usar opython_2_unicode_compatible
decorador para ambos Python 2 e Python 3:Você pode usar o acima em não
Model
objetos também.fonte
Você precisa definir qual coluna deseja exibir ...
por exemplo:
fonte
Você está certo em pensar que isso
__unicode__
acontece. Estou com este funcionando agora:Quando olho a lista de ações recentes, vejo o título do filme que acabei de editar.
fonte
Isso funcionaria, usando def str (self): que retorna self.title
Use algo como:
fonte
Como esta pergunta tem 6 anos, muitas coisas mudaram. Deixe-me fazer uma atualização. Com o python3.6 e a versão mais recente do Django (2.1.2), você deve sempre usar
__str__()
no novo código.__unicode__()
é uma história antiga para python2.7 porque em python3,str
éunicode
.fonte
Adicionando
__str__()
método ao modeloPatient
desta forma:exibirá o nome do paciente em vez do objeto. Para detalhes, verifique aqui
fonte