On Thursday, March 3, 2011 5:33:56 PM UTC+2, bruno desthuilliers wrote:
>
> On 3 mar, 15:16, kost BebiX <[email protected]> wrote: 
> > Yes, that's more a Python problem, not specifically django. 
> > 
> > You would normally do: 
> > 
> > class User(models.Model): 
> >     def __init__(self): 
> >         name = ... 
> > 
> > but this looks not cool) That's why most of python libraries use 
> "declarative" syntax to describe models: 
> > 
> > class User(models.Model): 
> >     name = ... 
>
>
> It has nothing to do with "looking cool" or anything like that. Using 
> models.fields as class attributes in models class statement's body 
> allow for the ORM to know what db fields and relations your table has 
> - not what instance attributes a model instance will have. Well, not 
> directly at least - of course the Model base case makes sure your 
> instance will have corresponding instance attributes (for db fields), 
> but note that these instance attributes are just plain python 
> attributes, NOT the models.fields you defined at the class level. 
>
>
Maybe you misunderstand what I was talking about. Doing

class A():
    b = SomeFieldType()

will require the "powerful python object model" (oh, I like that :-) to put 
in A's instance instance-variable b after all that. You say:

> Using models.fields as class attributes in models class statement's 
body allow for the ORM to know what db fields and relations your table has - 
not what instance attributes a model instance will have."

Yes. But more natural way would be to do something like
class A():
    schema = {
        'b': {'type': 'SomeType'}
    }

And that would describe class's A attribute schema that would be 
class-instance attribute from beginning till end (if there's no more magic), 
but that looks ugly and broken.

Where am I wrong?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to