Django modelo: Voltando nome de usuário do usuário conectado no momento

votos
0

Eu estou trabalhando em um aplicativo Django para hospedagem de mídia (especificamente áudio e imagens). Eu tenho galerias de imagens e fotos separar no meu modelo, e tê-los ligados com um ForeignKey(não tenho certeza se isso é correto, mas ainda está aprendendo). O que eu preciso é que a classe de Album __unicode__para retornar nome de usuário do proprietário do álbum.

class Album(models.Model):
    artist = models.ForeignKey(User, unique=True, related_name='artpunk')

    def __unicode__(self):
        return self.artist.username

Eu sei que existe a propriedade nome de utilizador, e confirmou-o através da inserção de um dir()e verificar a saída do console. O problema é quando eu entrar na seção de imagem do painel de administração, ele simplesmente afirma: Comando não reconhecido. Pode Userpropriedades não ser acessado por modelos? Ou estou fazendo algo errado?

EDIT: Esqueci de mencionar, usando Python 2.6 com Django 1.0.2. O texto exato do erro é, como acima, simplesmente Comando não reconhecido em negrito, e eu já tenha executado syncdbsem problema. No entanto, eu reran syncdb(deu nenhuma saída) esta manhã apenas para tentar novamente e agora parece estar funcionando bem.

É reprodutível, alterando o seguinte:

    def __unicode__(self):
        return self.artist.username

Para algo como isto:

    def __unicode__(self):
        return self.artist.username+'\'s Gallery'
Publicado 09/04/2009 em 01:39
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Não deve haver nenhum problema ao acessar o usuário (mesmo como uma chave estrangeira) a partir de um modelo. Acabei de testá-lo eu mesmo, e não parece haver nenhuma diferença significativa.

def __unicode__(self):
    return self.user.username

Em uma nota lateral, você também deve apenas ser capaz de retornar self.artist, pois acredito que User.__unicode__()retorna o nome de usuário de qualquer maneira.

Quais são os detalhes exatos do erro? Qual versão do Django / Python você está usando? Será que quis fazer uma mudança para o modelo que ainda não está refletida no banco de dados? Às vezes eu tenho notado que você só precisa reiniciar o servidor de teste para que as coisas funcionam bem. Particularmente na administração.

Em resposta à sua edição, tente lançar o nome de usuário como uma string:

str(self.user.username)
Respondeu 09/04/2009 em 04:36
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more