2010-02-01 2 views
0

J'ai un modèle qui contient un champ FileField. Je veux rechercher un nom de fichier spécifique. Comment fait-on ça? Je tentais:Django ORM: SELECT sur les attributs de champ

MyModel.objects.get(document__name=FOO) 

J'ai obtenu une inscription sur le champ « document » n'est pas autorisé.

Merci!

+0

pourrait aider à partager vos modèles. – monkut

+0

document est un FileField standard et son nom est un attribut standard. – SapphireSun

Répondre

1

Vous pouvez filtrer sur un document, et il va filtrer par la chaîne qui est le chemin sur le disque dans le fichier.

2

Les attributs d'un FileField ne sont pas stockés dans la base de données et ne peuvent pas être utilisés dans une requête. Par exemple, le nom est simplement la chaîne upload_to plus le nom de fichier. Si vous souhaitez stocker des données supplémentaires sur le fichier, vous devez mettre ces données dans d'autres champs de la base de données, comme le montre le example documentation avec une voiture portant le nom «57 Chevy». En général, le double trait de soulignement dans ORM de Django indique une relation de base de données, soit ForeignKey, soit ManyToMany. Donc, dans l'exemple de l'appel ORM que vous avez fourni, je suppose que MyModel avait un champ document qui était soit ForeignKey ou ManyToMany à un autre modèle, et que l'autre modèle a un champ appelé name. Ce qui ne sonne pas est le cas.

espoir qui aide certains.

2

Pour ce faire, à la place:

MyModel.objects.get(document__icontains='FOO') 
Questions connexes