2010-11-29 5 views
1

J'aimerais avoir deux types d'entités se référant les unes aux autres. mais python ne sait pas encore le nom de la deuxième classe d'entité dans le corps de la première. alors comment dois-je coder.App Engine, référence croisée entre deux entités

class Business(db.Model): 
    bus_contact_info_ = db.ReferenceProperty(reference_class=Business_Info) 

class Business_Info (db.Model): 
    my_business_ = db.ReferenceProperty(reference_class=Business) 

si vous conseillons d'utiliser la référence dans une seule et utiliser la propriété implicitement créé (qui est un objet de requête) dans d'autres. alors je remets en question la peine de quota CPU d'utiliser la requête vs directement en utilisant get() sur les principaux

Moyens conseiller comment écrire ce code en python

Répondre

4

Les requêtes sont un peu plus lent, et donc ils utilisent un peu plus Ressources. ReferenceProperty ne nécessite pas class_class. Ainsi, vous pouvez toujours définir Business comme:

class Business(db.Model): 
    bus_contact_info_ = db.ReferenceProperty() 

Il existe également de meilleures options pour votre infrastructure de données. Consultez l'article modelling relationships pour des idées.

Est-ce un mappage un-à-un? S'il s'agit d'un mappage un-à-un, il vaudrait mieux dénormaliser vos données.

Est-ce que ça change? Si ce n'est pas le cas (et qu'il s'agit d'un en un), vous pourriez peut-être utiliser des groupes d'entités et structurer vos données pour pouvoir utiliser directement les clés/noms de clés. Vous pourriez être en mesure de le faire en faisant BusinessInfo un enfant de Business, puis utilisez toujours 'i' comme nom_clé. Par exemple:

+0

Merci beaucoup Robert – Tiwari