Упростит немного, но надеюсь, что проблема ясна в этом примере:
Я использую mysql с sqlalchemy ORM.Допустим, у меня есть таблица с именем «cellphoneTable», а другая - «billTable».От сотового телефона до счетов существует 1-много отношений.Используя Зефир, у меня есть следующее, и он РАБОТАЕТ:
class cellphoneSchema(Schema):
id = fields.Int(dump_only=True)
number = fields.Str()
bills = fields.nested('billSchema', many=True)
class billSchema(Schema):
<nothing special here: assume some Ints Floats Dates and Strings>
Теперь, когда я хочу сбросить данные моего мобильного телефона с счетами:
c1 = <get a cellphone record via session.query(cellphoneTable).get(c_id)...>
cs = cellphoneSchema()
return cs.dump(c1).data
Как указано выше, это работает.Я получаю данные мобильного телефона и все связанные с этим счета за этот c_id.
ОДНАКО, я хочу получить, например, только последние 12 месяцев счетов (или последние 3 или какой-то такой лимит).
Каков наилучший способ ограничить вложенный запрос Marshmallow ограничением «числа строк» без необходимости писать запрос самостоятельно, а затем «соединить» два результата для jsonify и return - обратите внимание, что я делаютакие запросы ко многим таблицам по всему моему приложению, так что надеемся избежать раздувания кода и ручной работы над многими из них.
Поддерживает ли Marshmallow это?Есть идеи?Через декораторов или ????хотя большая часть того, что я прочитал, работает с отдельным объектом (например, pre_load или post_load).Кроме того, я не хочу получать все строки, а затем выбрасывать большую часть того, что мне не нужно, и есть совсем немного того, что мне не нужно (примечание: мы говорим о получении десятков строк из, возможно, сотен).