Como salvar django FileField a pasta de usuário?

votos
3

Eu tenho um modelo como este


def upload_location(instance, filename):
    return 'validate/%s/builds/%s' % (get_current_user(), filename) 

class MidletPair(models.Model):
    jad_file = models.FileField(upload_to = upload_location)
    jar_file = models.FileField(upload_to = upload_location)
    upload_to=tempfile.gettempdir()

Como posso obter o usuário atual em upload_location () ...?

Nota lateral: Vista acima coisas Django é confusa, pois há um monte de pré-1.0 coisas ao redor na rede.

Publicado 13/05/2009 em 15:16
fonte usuário
Em outras línguas...                            


3 respostas

votos
8

O usuário atual é armazenada no objeto de solicitação, e você não pode conseguir isso em um método modelo a menos que você passá-lo de outros lugares - o que você não pode fazer na função upload_to.

Então você vai precisar de abordar esta questão de uma forma diferente - eu sugeriria fazê-lo ao nível do formulário. Você pode passar o objeto do pedido no formulário __init__método e armazená-lo em um atributo exemplo, onde você pode obtê-lo em um manipulador de upload personalizado. Para documentação sobre o manipulador de upload, olhe aqui .

Respondeu 13/05/2009 em 16:13
fonte usuário

votos
5

Se você adicionou um campo de usuário para o modelo, e ter esse atributo definido antes de fazer um upload, então você pode obter o usuário na sua função upload_location através do atributo de instância.

Respondeu 11/03/2010 em 13:38
fonte usuário

votos
4

Primeiro, não pesquisar na net para Django ajuda. Procure aqui apenas: http://docs.djangoproject.com/en/dev/

Em segundo lugar, o usuário atual é parte de autenticação.

http://docs.djangoproject.com/en/dev/topics/auth/#topics-auth

O usuário é registrado no pedido. request.user

Respondeu 13/05/2009 em 15:23
fonte usuário

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