2012-05-11 1 views
4

Je veux retourner une propriété personnalisée de flacon agité, commeretour propriété personnalisée du flacon-agité

class Item(db.Model): 
    creator_id = db.Column(db.Integer, db.ForeignKey('User.id')) 
    owner_id = db.Column(db.Integer, db.ForeignKey('User.id')) 
    owner = db.relationship("User",backref="items",primary_join="Item.owner_id==User.id") 
    owner = db.relationship("User",backref="created_items",primary_join="Item.creator_id==User.id")   


class User(db.Model): 
    id = db.Column(db.Integer, primary_key = True) 
    firstName = db.Column(db.Unicode(50), nullable = False) 
    lastName = db.Column(db.Unicode(50), nullable = False) 
    email = db.Column(db.Unicode(100), nullable = False) 

Je voudrais pouvoir revenir prenom + « » + lastName dans l'article pour le créateur dans le /api/utilisateur/1 pour flacon-agité

Répondre

3

Vous ne pouvez pas vraiment faire cela sans modifier flacon-agité. Si vous regardez dans la source flasque-agitée, dans views.py, la méthode _to_dict itère explicitement sur les propriétés de l'objet et inclut uniquement celles qui sont des instances du type ColumnProperty de SQLAlchemy.

Cette fonction serait l'endroit pour commencer, modifier ce code pour inclure les propriétés d'un autre type, puis ajoutez une propriété à votre classe User qui concatène firstName et lastName.

+1

Mise à jour: Flask-Restless [support ajouté] (https://github.com/jfinkels/flask-restless/issues/135) pour [SQLAlchemy's hybrid_property] (http://docs.sqlalchemy.org/ru/latest /orm/extensions/hybrid.html), donc maintenant si vous définissez votre propriété avec '@ hybrid_property', ils devraient apparaître dans votre API. Vous devez également définir une expression sur votre propriété hybride avant que cela fonctionne. – glyphobet

+5

Depuis la version [0.11.0] (https://flask-restless.readthedocs.org/en/latest/changelog.html#version-0-11-0) La méthode Flask-Restless ''create_api()' supporte un ' argument include_methods, où vous pouvez spécifier une liste de méthodes définies sur le modèle et dont les valeurs de retour doivent être incluses dans la réponse. Voir [ici] (https://flask-restless.readthedocs.org/en/latest/customizing.html#specifying-which-columns-are-provided-in-responses). – tcmb

Questions connexes