Django Queryset através Models?

votos
8

Tenho vários modelos e deseja retornar um queryset de todos os modelos que pertencem a um usuário, eu estou querendo saber se é possível voltar um Queryset a partir de vários modelos?

Publicado 10/12/2008 em 21:07
fonte usuário
Em outras línguas...                            


2 respostas

votos
8

Estou assumindo que você quer dizer que você gostaria de retornar um único queryset de todos os objetos pertencentes ao usuário de cada modelo.

Você precisa de um queryset ou apenas um iterável? AFAIK, heterogêneos qs do não são possíveis. No entanto, você pode facilmente retornar uma lista, um iterador acorrentado (itertools) ou um gerador para fazer o que quiser. Isso pressupõe que os modelos que fazem referência ao usuário são conhecidos antes do tempo. Assumindo related_name padrão, atributos queryset relacionados poderia ser acessado a partir de instância de usuário via o nome do modelo:

qs = getattr(user, '%s_set' % model_name.lower());

Claro, usando qualquer lista heterogênea que você quer só será capaz de usar campos ou métodos que são definidos em todos esses modelos, ou você teria que determinar o tipo de cada objeto para fazer quaisquer ações específicas do tipo.

Respondeu 12/12/2008 em 00:03
fonte usuário

votos
3

Seus modelos devem conter campos de relacionamento (ForeigKey e ManyToManyField), com set argumento related_name palavra-chave. Verifique a documentação aqui .

Respondeu 10/12/2008 em 21:55
fonte usuário

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