On Monday, October 24, 2011 9:33:33 AM UTC-4, Archibald Linx wrote:
>
> Dear web2py users, 
>
> I have some questions about the book : 
>
> 1) There is a typo here : 
> http://www.web2py.com/book/default/chapter/10#Auto-completion 
> It should be "if not request.vars.month:" and not "it not 
> request.vars.month:" 
>
> 2) On page 69, what do you mean by "private" ? 
> " Class atributes, methods, and operators starting with a double 
> underscore are usually intended to be private"
>

Look at the "Designing for inheritance" section 
here: http://www.python.org/dev/peps/pep-0008/.
 

>
> 3) On page 105, there is the following line : 
> "images = db().select(db.image.ALL, orderby=db.image.title)" 
>
> On page 108, there is the following line : 
> "comments = db(db.comment.image_id==image.id).select()" 
>
> When is the query written inside the brackets of db() and when is it 
> written inside the brackets of select() ?
>

The content of the first select() is not a query -- it is just specifying 
the fields to select, as well as an orderby. However, when you specify 
fields to select in the select(), specifying a query in the db() is optional 
-- it defaults to a query for all the records in the table. In the second 
case, because select() is empty, it defaults to selecting all the fields in 
the queried table (i.e., in db.comment). Basically, as long as there's 
something in the select(), you can leave the query empty, and it defaults to 
all the records in the table, and if there's a query, you can leave select() 
empty, and it defaults to all the fields in the table. This is explained 
here: http://web2py.com/book/default/chapter/06#select
 

>
> 4) On page 108, there is this line : 
> "db.comment.image_id.default = image.id" 
>
> What does "default" do ? Couldn't it just be "db.comment.image_id = 
> image.id" ? 
>

Fields can have default values, and you can assign, access, and update them 
via the field's 'default' attribute. Often initially the default is 
specified when the field is first defined:

db.define_table('mytable', Field('myfield', default='my default value'))

This can then be accessed and changed via db.mytable.myfield.default. You 
can also make the initial assignment via db.mytable.myfield.default.

You don't want to do db.comment.image_id = image.id because 
db.comment.image_id is itself a Field object, and this assignment would 
replace the entire Field object with image.id.

Anthony

Reply via email to