python - Pode "list_display" em um Django ModelAdmin atributos de campos ForeignKey de exibição? - CoreDump.pt
Pode "list_display" em um Django ModelAdmin atributos de campos ForeignKey de exibição?
Eu tenho um modelo Pessoa que tem uma relação de chave estrangeira para reservar. Livro tem um número de campos, mas eu estou mais preocupado com o autor (a CharField standard).
Com isso dito, no meu modelo PersonAdmin, eu gostaria de exibir book.author usando list_display. Eu tentei todos os métodos óbvios para fazê-lo (veja abaixo), mas nada parece funcionar. Alguma sugestão?
pythondjangodjango-adminmodeladmin
Publicado 02/10/2008 em 19:26 2008-10-02 19:26
Como outra opção, você pode fazer ups olhar como:
Respondeu 02/10/2008 em 22:11 2008-10-02 22:11 share
Apesar de todas as grandes respostas acima e devido a eu ser novo para Django, eu ainda estava preso. Aqui está a minha explicação de uma perspectiva muito novato.
admin.py (Caminho incorreto) - Você acha que ele iria trabalhar usando 'model__field' para referência, mas isso não acontece
admin.py (maneira correta) - esta é a forma como você faz referência a um nome de chave estrangeira a maneira Django
Para referência adicionais, consulte o link modelo Django aqui
Respondeu 19/05/2014 em 22:55 2014-05-19 22:55 share
Como o resto, eu fui com chamáveis ​​também. Mas eles têm uma desvantagem: por padrão, você não pode ordenar sobre eles. Felizmente, há uma solução para isso:
Respondeu 28/07/2010 em 10:13 2010-07-28 10:13 share
fonte usuário Arjen
Por favor, note que a adição da get_authorfunção seria retardar o list_display na administração, porque mostrando cada pessoa iria fazer uma consulta SQL.
Para evitar isso, é necessário modificar get_querysetmétodo em PersonAdmin, por exemplo:
Antes: 73 consultas em 36.02ms (67 consultas duplicadas em admin)
Depois: 6 consultas em 10.81ms
Respondeu 28/01/2015 em 11:20 2015-01-28 11:20 share
fonte usuário Hunger
De acordo com a documentação, você só pode exibir a __unicode__representação de um ForeignKey:
Parece estranho que ele não suporta o 'book__author'formato de estilo que é usado no resto do API DB.
Acontece que há um bilhete para este recurso , que é marcada como não fixará.
Você pode mostrar o que quiser na visualização da lista usando um exigível. Ele ficaria assim:
BOOK_AUTHOR def (objecto):
voltar object.book.author
classe PersonAdmin (admin.ModelAdmin):
Respondeu 30/01/2009 em 18:41 2009-01-30 18:41 share
fonte usuário AlexRobbins
Acabei de publicar um trecho que faz suporte admin.ModelAdmin '__' sintaxe:
Isto é, basicamente, apenas fazendo a mesma coisa descrito em outras respostas, mas ele automaticamente cuida de (1) definindo admin_order_field (2) definindo short_description e (3) modificar o queryset para evitar um golpe de banco de dados para cada linha.
Respondeu 03/02/2013 em 22:21 2013-02-03 22:21 share
fonte usuário Jack Cushman
Este já é aceito, mas se houver quaisquer outros manequins lá fora (como eu) que não obtê-lo imediatamente a partir da resposta atualmente aceita , aqui está um pouco mais detalhadamente.
A classe modelo referenciado pelas ForeignKeynecessidades de ter um __unicode__método dentro dela, como aqui:
Que fez a diferença para mim, e deve aplicar-se o cenário acima. Isso funciona em Django 1.0.2.
Respondeu 24/01/2009 em 00:40 2009-01-24 00:40 share
fonte usuário bmelton
Há um muito fácil de usar pacote disponível no PyPI que trata exatamente isso: -admin relacionados com o Django . Você também pode ver o código no GitHub .
Usando isso, o que você quer alcançar é tão simples como:
Ambos os links incluir informações completas sobre a instalação e uso por isso não vou colá-los aqui no caso de eles mudam.
Assim como uma nota lateral, se você já estiver usando algo diferente model.Admin(por exemplo, eu estava usando SimpleHistoryAdminem seu lugar), você pode fazer isso: class MyAdmin(SimpleHistoryAdmin, RelatedFieldAdmin).
Respondeu 28/05/2016 em 10:30 2016-05-28 10:30 share
fonte usuário Vlad Schnakovszki
se você tentar isso em inline, você não vai ter sucesso a menos que:
em sua linha:
no seu modelo (MyModel):
Respondeu 30/01/2014 em 13:30 2014-01-30 13:30 share
fonte usuário Eyal Ch
Se você tem um monte de relação campos de atributo para usar em list_displaye não quero criar uma função (e é atributos) para cada um, a sujeira, mas solução simples seria substituir o ModelAdmininstace __getattr__método, criando as funções chamáveis na mosca:
Como essência aqui
Atributos especiais que pode ser chamado gosto booleane short_descriptiondeve ser definida como ModelAdminatributos, por exemplo, book__author_verbose_name = 'Author name'e category__is_new_boolean = True.
O que pode ser chamado admin_order_fieldatributo é definido automaticamente.
Não se esqueça de usar o list_select_related atributo no seu ModelAdminfazer Django evitar consultas adicionais.
Respondeu 12/01/2016 em 03:42 2016-01-12 03:42 share
fonte usuário Cauê Thenório
resposta AlexRobbins' trabalhou para mim, exceto que as duas primeiras linhas precisam estar no modelo (talvez isso foi assumido?), e deve fazer referência a si mesmo:
Em seguida, a parte de administração funciona muito bem.
Respondeu 25/03/2009 em 01:27 2009-03-25 01:27 share
fonte usuário alastairc
Respondeu 22/09/2016 em 14:48 2016-09-22 14:48 share
fonte usuário wieczorek1990
ferramentas Python / bibliotecas para Web Semântica: estado da arte?
SqlAlchemy fundir () não funciona utilizando balão
Cant obter widget personalizado para trabalhar, substituindo Widget de tempo de data padrão do Django em Django admin