Ce que vous essayez d'accomplir n'est pas très clair. Si je comprends bien, vous essayez de définir le modèle de voiture avec attribut moteur qui pointe vers un autre modèle de moteur, et en créant des objets de voiture avec engine_type, le code doit soit:
- créer un objet moteur avec le type de moteur si elle n » t existe
- charge l'objet du moteur avec le type de moteur si existe
puis l'affecter à l'objet de voiture.
Si tel est le cas, procédez comme suit.
class Engine(object):
def __init__(self, engine_type):
self.engine_type
@staticmethod
def load(engine_type):
return session.query(Engine)\
.filter(engine_type==engine_type).one()
class Car(object):
def __init__(self, engine_type):
try:
engine = Engine.load(engine_type)
except NoResultsFound:
engine = Engine(session_type)
session.add(engine)
self.engine=engine
Vous devrez définir pour créer la relation « moteur » sur la voiture vous Mapper, et vous aurez besoin de peaufinage de code pour activer la portée de l'objet de la session en cas de besoin.
effort vaillant au formatage du code, mais j'ai dû le réparer pour vous. Utilisez quatre espaces devant un bloc de code comme je l'ai fait. utilisez le caractère 'pour le code en ligne. – aaronasterling
J'adorerais avoir une réponse où les champs 'Engine' sont mappés au même tabe que les champs' Car', car ils sont liés 1: 1. Hibernate fait cela hors de la boîte. –