2016-01-12 3 views
0

Я работаю в API в GAE, и я использую Endpoints (с python). Данные, которые я хочу отправить с ответом, - это несколько объектов, которые я создаю в этот момент. Итак, чтобы отправить эти объекты, я создаю класс с сообщением ProtoRPC. И как я хочу отправить список из них, я строю класс, представляющий коллекции или их список.Как отправлять списки объектов с конечными точками GAE?

Это основа код:

class Greeting(messages.Message): 
"""Greeting that stores a message.""" 
message = messages.StringField(1) 

class GreetingCollection(messages.Message): 
    """Collection of Greetings.""" 
    items = messages.MessageField(Greeting, 1, repeated=True) 

Но когда я хочу собрать коллекцию, я не нашел способ. Очевидно, видя в документации, я прочитал, что я могу построить статический выдержанные, чтобы отправить его, например:

STORED_GREETINGS = GreetingCollection(items=[ 
    Greeting(message='hello world!'), 
    Greeting(message='goodbye world!'), 
]) 

Но если я хочу построить это динамически? В моем случае у меня есть процесс, который возвращает список приветствий, и я не нахожу способ его преобразования в коллекцию приветствия для отправки с помощью EndPoints.

return STORED_GREETINGS 

Может быть, я в поиске что-то вроде этого:

(only orientative) 
for greeting in greetings: 
    STORED_GREETINGS.add(greeting) 

, но я не считаю, как делать.

Любая помощь будет приветствоваться. Спасибо вам большое.

ответ

1

Просто построить нормальный список, содержащий Поздравительные объекты и присвоить его GreetingCollection:

greetingItems = [] 
    greetingItems.append(Greeting(message='hello world!')) 
    greetingItems.append(Greeting(message='goodbye world!')) 
    ... 

    STORED_GREETINGS = GreetingCollection(items=greetingItems) 
+0

Это прекрасно @ ChrisC73! Я не знаю, как я не думал об этом раньше! Спасибо огромное! –

0

вы должны быть в состоянии просто сделать:

greeting_collection = GreetingCollection() 
greeting_collection.items = list_of_greetings 

Или, наоборот:

greeting_collection = GreetingCollection() 
greeting_collection.items.extend(iterable_of_greetings) 
+0

Я не могу сделать это напрямую, потому что оба объекта не одинаковы. '' 'AttributeError: Невозможно присвоить произвольное значение py/object сообщению Приветствие''' –

Смежные вопросы