Sto creando una classe di generazione di query che aiuterà nella costruzione di una query per mongodb dai parametri URL. Non ho mai fatto molta programmazione orientata agli oggetti, o progettato classi per il consumo da parte di persone diverse da me, oltre all'uso di costrutti linguistici di base e all'uso dei modelli incorporati di django.I metodi della classe interna restituiscono valori o semplicemente modificano le variabili di istanza in python?
così ho questa classe QueryBuilder
class QueryHelper():
"""
Help abstract out the problem of querying over vastly
different dataschemas.
"""
def __init__(self, collection_name, field_name, params_dict):
self.query_dict = {}
self.params_dict = params_dict
db = connection.get_db()
self.collection = db[collection_name]
def _build_query(self):
# check params dict and build a mongo query
pass
Ora in _build_query
sarò controllando il dict params e popolando query_dict
in modo da passare a Mongo find()
funzione. Nel fare questo mi chiedevo se c'era un approccio assolutamente corretto a se _build_query
dovrebbe restituire un dizionario o se dovrebbe solo modificare self.query_dict
. Poiché si tratta di un metodo interno, suppongo che sia giusto modificare semplicemente self.query_dict
. C'è un modo giusto (pitonico) per avvicinarti a questo? È solo sciocco e non è una decisione importante del design ?? Qualsiasi aiuto è apprezzato. Grazie.
'.execute()' non è necessario. Puoi attivare l'esecuzione usando '.all()', '.first()', '.one()'. – jfs
Certo, va bene se hai più di un metodo che effettivamente fa qualcosa. – kindall