I'm wondering if it is possible to add a field to a Model class with a
mixin.

Here's my hypothetical problem:  let's say that I am designing Blog
software -- I know, I know, what an innovation! -- that features Posts
and Comments.

class Post(db.Model):
    title = db.StringProperty(required=True)
    body = db.TextProperty(required=True)
    added = db.DateProperty(auto_add_now=True)

class Comment(db.Model):
    author = db.UserProperty()
    body = db.TextProperty()
    added = db.DateProperty()
    edited = db.DateProperty()

I would like Post to have a counter of the number of comments that it
has, so I could change my definition of Post to this:
class Post(db.Model):
    title = db.StringProperty(required=True)
    body = db.TextProperty(required=True)
    added = db.DateProperty(auto_add_now=True)
    comments_counter = db.IntegerProperty(required=True, defualt=0)

However, what I would really to do is have a mixin class called
Commentable that will add a variety of useful methods to the class
that mixes it in.  It'd be super cool to be able to have
comments_counter added in by it:

class Commentable:
    comments_counter = db.IntegerProperty(required=True, default=0)

    # Various method definitions excluded for brevity...

class Post(db.Model, Commentable):
    title = db.StringProperty(required=True)
    body = db.TextProperty(required=True)
    added = db.DateProperty(auto_add_now=True)
    # comments_counter = db.IntegerProperty(required=True, defualt=0)
    # Now, comments_counter is included by Commentable mixin

I gave something like this a try last night, and it didn't seem to
work, so I figured that I'd ask before going too-deeply down a rabbit
hole.

If this won't work, I think that it'd be super cool.  It would enable
a wide range of work-and-time saving plugins, such as in the Ruby on
Rails ecosystem.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" 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/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to