[PonyORM-list] Problem with iterated linked table

Gamesbrainiac gamesbrainiac at gmail.com
Fri Nov 21 05:00:27 UTC 2014


Boom! Alexander has spoken :)

On Thu, Nov 20, 2014 at 11:04 PM, Alexander Kozlovsky <
alexander.kozlovsky at gmail.com> wrote:

> Hi guys!
>
> It seems that we should add several convenience methods to collections, so
> it will be possible to do any of the following:
>
> {% for comment in post.comments.order_by(Comment.id) %}
>
> {% for comment in post.comments.filter(lambda c: c.date >= yesterday
> ).order_by(lambda c: desc(c.date)) %}
>
> All of this can be achieved today, but with more complex syntax.
>
> Also, we probably can automatically sort collection items by primary key
> during iteration, if no explicit ordering was set. In some cases the
> ordering is unnecessary, because conceptually the collection is just an
> unordered set. But most users probably expect that the result of collection
> iteration is predictable.
>
> > IMO, the database should be doing the sorting in the query, not sorted()
>
> Actually I prefer to do sorting in memory (if we need to process entire
> collection), because it puts less burden on the database, and the
> application code can be easily scaled by running multiple parallel
> processes. But if only a subset of records is retrieved from the database,
> then sorting should be done in the query, in order to avoid fetching of
> unnecessary data. So maybe it will make sense to add two separate methods:
> `post.comments.sort_by(Comment.id)` to do sorting in memory and
> `post.comments.order_by(Comment.id).page(1, pagesize=10)` to add ORDER
> BY...LIMIT sections to the query.
>
> I hope that we can add `order_by` and `filter` methods to collections in
> our next release )
>
>
> On Thu, Nov 20, 2014 at 6:54 PM, Matthew Bell <matthewrobertbell at gmail.com
> > wrote:
>
>> IMO, the database should be doing the sorting in the query, not sorted()
>>
>> On 20 November 2014 15:16, Gamesbrainiac <gamesbrainiac at gmail.com> wrote:
>>
>>> Well, I have set up the following example for you, see if it works for
>>> you:
>>>
>>> https://gist.github.com/gamesbrainiac/5eacc2a5c1b0fb1cd52f
>>>
>>> Hope this helps :)
>>>
>>> On Thu, Nov 20, 2014 at 7:08 PM, Pedro Baumann <ondoheer at gmail.com>
>>> wrote:
>>>
>>>> Precisely! That's my problem.
>>>> On 20 Nov 2014 02:21, "Gamesbrainiac" <gamesbrainiac at gmail.com> wrote:
>>>>
>>>>> I think I get your problem now. Right now, it is ordering by post ID.
>>>>> Do you want the comments of a particular post to be ordered by ID, or do
>>>>> you want something like:
>>>>>
>>>>> Post 1:
>>>>>     Comment 1
>>>>>     Comment 2
>>>>> Post 2:
>>>>>    Comment 1
>>>>>    Comment 2
>>>>>
>>>>> ?
>>>>>
>>>>> On Thu, Nov 20, 2014 at 12:19 PM, Pedro Baumann <ondoheer at gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Hello Gamebrainiac
>>>>>>
>>>>>> Thanks for the link, it seems really interesting.
>>>>>>
>>>>>> I have tried both your suggestions and both gave mme the same problem.
>>>>>>
>>>>>> They both return the Post object ordered by id, same as my code did.
>>>>>> The problem is that somehow when I iterate through the posts like soÑ
>>>>>>
>>>>>>     {% for post in posts %}
>>>>>>        {% for comment in post.comments %}
>>>>>>
>>>>>>
>>>>>> the comments come out in any order, and they change with every
>>>>>> request!!!!
>>>>>>
>>>>>> That same thing happens with your suggestions.
>>>>>> I think this hasn't happend to me with pony before, but somehow it
>>>>>> does now.  Is there a way to sort the linked table from jinja?
>>>>>>
>>>>>> something like post.comments.order_by(id)?
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> *Pedro Baumann Cornejo*
>>>>>> Psicólogo - Psicoterapeuta - Flores de Bach
>>>>>> Francisco de Paula Ugarriza 309 dpto. 102 Miraflores.
>>>>>> Lima
>>>>>> Perú
>>>>>>
>>>>>> On Thu, Nov 20, 2014 at 1:02 AM, Gamesbrainiac <
>>>>>> gamesbrainiac at gmail.com> wrote:
>>>>>>
>>>>>>> In addendum, this is the exact part where I talk about querying:
>>>>>>> http://nafiulis.me/a-todo-app-with-flask-and-pony.html#id4
>>>>>>>
>>>>>>> On Thu, Nov 20, 2014 at 12:01 PM, Gamesbrainiac <
>>>>>>> gamesbrainiac at gmail.com> wrote:
>>>>>>>
>>>>>>>> Try using:
>>>>>>>>
>>>>>>>> '"SELECT * FROM "post" ORDER BY "post"."id"'
>>>>>>>>
>>>>>>>> If I were you, I'd do the following in pony:
>>>>>>>>
>>>>>>>> Post.select().order_by(Post.id)
>>>>>>>>
>>>>>>>> Also, my post on Pony might be worth a look ->
>>>>>>>> http://nafiulis.me/a-todo-app-with-flask-and-pony.html
>>>>>>>>
>>>>>>>> On Thu, Nov 20, 2014 at 11:43 AM, Pedro Baumann <ondoheer at gmail.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Hello,
>>>>>>>>>
>>>>>>>>> first of all I want to thank you for creating such an intuitive
>>>>>>>>> and pythonic ORM, I have enjoyed every minute if used it, it's most
>>>>>>>>> intuitive and it really heps code readability.
>>>>>>>>>
>>>>>>>>> I'm having a small problem with my latest project, I hope you can
>>>>>>>>> help me.
>>>>>>>>>
>>>>>>>>> I'm developing a web app that has a basic "blog like" module.
>>>>>>>>>
>>>>>>>>> Post->Comments->Replies
>>>>>>>>>
>>>>>>>>> I'm using Flask as a framework.
>>>>>>>>>
>>>>>>>>> I'm passing
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *posts = Post.select_by_sql('SELECT * FROM post ORDER BY id')*
>>>>>>>>>
>>>>>>>>> to the template, and then iterating through it to print the
>>>>>>>>> comments as in
>>>>>>>>>
>>>>>>>>> {% for comment in post.comments %}
>>>>>>>>>   {% if loop.index > numberComments %}{% break %}{% endif %}
>>>>>>>>>  // code code code (HTML)
>>>>>>>>> {% endfor %}
>>>>>>>>>
>>>>>>>>> the problem is the comments come out in random order, varying on
>>>>>>>>> each iteration.
>>>>>>>>>
>>>>>>>>> I need to be able to print the comments in order for my ajax
>>>>>>>>> functions that retrieve more comments to work.
>>>>>>>>>
>>>>>>>>> I think I am missing something here.
>>>>>>>>>
>>>>>>>>> Thanks !
>>>>>>>>>
>>>>>>>>> *Pedro Baumann Cornejo*
>>>>>>>>> Psicólogo - Psicoterapeuta - Flores de Bach
>>>>>>>>> Francisco de Paula Ugarriza 309 dpto. 102 Miraflores.
>>>>>>>>> Lima
>>>>>>>>> Perú
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> ponyorm-list mailing list
>>>>>>>>> ponyorm-list at ponyorm.com
>>>>>>>>> /ponyorm-list
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Kind Regards,
>>>>>>>>
>>>>>>>> Quazi Nafiul Islam
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Kind Regards,
>>>>>>>
>>>>>>> Quazi Nafiul Islam
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> ponyorm-list mailing list
>>>>>>> ponyorm-list at ponyorm.com
>>>>>>> /ponyorm-list
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> ponyorm-list mailing list
>>>>>> ponyorm-list at ponyorm.com
>>>>>> /ponyorm-list
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Kind Regards,
>>>>>
>>>>> Quazi Nafiul Islam
>>>>>
>>>>> _______________________________________________
>>>>> ponyorm-list mailing list
>>>>> ponyorm-list at ponyorm.com
>>>>> /ponyorm-list
>>>>>
>>>>>
>>>> _______________________________________________
>>>> ponyorm-list mailing list
>>>> ponyorm-list at ponyorm.com
>>>> /ponyorm-list
>>>>
>>>>
>>>
>>>
>>> --
>>> Kind Regards,
>>>
>>> Quazi Nafiul Islam
>>>
>>> _______________________________________________
>>> ponyorm-list mailing list
>>> ponyorm-list at ponyorm.com
>>> /ponyorm-list
>>>
>>>
>>
>>
>> --
>> Regards,
>>
>> Matthew Bell
>>
>> _______________________________________________
>> ponyorm-list mailing list
>> ponyorm-list at ponyorm.com
>> /ponyorm-list
>>
>>
>
> _______________________________________________
> ponyorm-list mailing list
> ponyorm-list at ponyorm.com
> /ponyorm-list
>
>


-- 
Kind Regards,

Quazi Nafiul Islam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </ponyorm-list/attachments/20141121/7b558b64/attachment.html>


More information about the ponyorm-list mailing list