Your SlideShare is downloading. ×
0
A brief history of
Django model syntax
r1000
January 2004
cms/apps/polls/dblayout.sql
BEGIN;


CREATE TABLE polls (
     id serial PRIMARY KEY,
     label varchar(20) NOT NULL, -- ...
cms/apps/polls/polls.py
class PollDoesNotExist(ObjectDoesNotExist):
    pass


class ChoiceDoesNotExist(ObjectDoesNotExist...
r4000
August 2004
cms/datadescriptions/polls.py
class Poll(gen.DataDescription):
    app_name = APP_NAME
    app_label = APP_LABEL
    modul...
cms/apps/polls/polls.py




# DO NOT EDIT THIS FILE MANUALLY. IT WAS GENERATED BY A PROGRAM.
r8825
         June 2005
First public Django release
ellington/polls/models/polls.py
class Poll(meta.Model):
    db_table = 'polls'
    fields = (
        meta.SlugField('slug...
r9000
Django 0.91
ellington/polls/models/polls.py
class Poll(meta.Model):
    slug = meta.SlugField(unique_for_month='pub_date')
    questio...
r17000+
 Trunk(ish)
ellington/polls/models.py

class Poll(models.Model):
    slug = models.SlugField(unique_for_month='pub_date')
    question...
newforms-admin
ellington/polls/admin.py




from ellington.polls.models import Poll


class PollOptions:
    list_display = ('question', ...
Want to hack on
  Ellington?
   jacob@jacobian.org
Upcoming SlideShare
Loading in...5
×

A brief history of Django model syntax

3,932

Published on

Published in: Technology, Design
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,932
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
74
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "A brief history of Django model syntax"

  1. 1. A brief history of Django model syntax
  2. 2. r1000 January 2004
  3. 3. cms/apps/polls/dblayout.sql BEGIN; CREATE TABLE polls ( id serial PRIMARY KEY, label varchar(20) NOT NULL, -- used by the template and possibly by the URL release_date timestamp with time zone NOT NULL, expire_date timestamp with time zone NOT NULL, question varchar(255) NOT NULL ); CREATE INDEX polls_label ON polls (label); CREATE TABLE poll_choices ( id serial PRIMARY KEY, polls_id integer REFERENCES polls(id), choice varchar(255) NOT NULL, votes integer NOT NULL DEFAULT 0 ); CREATE TABLE poll_logged_votes ( poll_id integer NOT NULL REFERENCES polls(id), choice_id integer NOT NULL REFERENCES poll_choices(id), ip_address inet NOT NULL, vote_time timestamp with time zone NOT NULL, PRIMARY KEY (poll_id, ip_address, vote_time) ); CREATE TABLE polls_sites ( polls_id integer NOT NULL REFERENCES polls(id), sites_id integer NOT NULL REFERENCES sites(id), PRIMARY KEY (polls_id, sites_id) ); COMMIT;
  4. 4. cms/apps/polls/polls.py class PollDoesNotExist(ObjectDoesNotExist): pass class ChoiceDoesNotExist(ObjectDoesNotExist): pass # ... class Poll: def __init__(self, id, label, release_date, expire_date, question): # ... def save(self): # ... def get_choices(self): # ... # ... def get_poll_by_id(poll_id): # ... def get_poll_by_label(label, year, month): # ... def get_poll_list(year=None, month=None): # ...
  5. 5. r4000 August 2004
  6. 6. cms/datadescriptions/polls.py class Poll(gen.DataDescription): app_name = APP_NAME app_label = APP_LABEL module_name = 'polls' object_name = 'Poll' object_name_verbose = 'poll' db_table = 'polls' representation = ['return self.question'] fields = ( gen.AutoincrementField('id', 'ID', primary_key=True), gen.SlugField('slug', 'slug', unique_for_month='pub_date'), gen.CharacterField('question', 'question', maxlength=255), gen.DatetimeField('pub_date', 'date published', create_list_lookup_function=True, lookup=gen.DATEPART, create_next_previous=True), gen.DatetimeField('expire_date', 'expiration date'), gen.ManyToManyField('sites', 'sites', can_be_blank=True, relationship=gen.ManyToManyRelation(core.Site, 'site_id')), ) list_ordering_tuple = (('pub_date', gen.ORDER_ASCENDING),) exceptions = ( ('AlreadyVoted', None), ('PollClosed', None), ('InvalidVote', quot;An attempt to vote for a choice that isn't associated with the given pollquot;) ) generate_admin = True hierarchical_admin = (gen.BY_DATE, 'pub_date') add_permission = ('add_poll', 'Can add polls') change_permission = ('change_poll', 'Can change polls') template_admin_form = 'polls_form' admin_url = 'polls' admin_field_conf = ( (None, {'classes': ('aligned',), 'fields': ('question', 'slug', 'pub_date', 'expire_date', 'sites')}), ) extra_model_code_top = quot;from settings import POLL_VOTE_INTERVALquot;
  7. 7. cms/apps/polls/polls.py # DO NOT EDIT THIS FILE MANUALLY. IT WAS GENERATED BY A PROGRAM.
  8. 8. r8825 June 2005 First public Django release
  9. 9. ellington/polls/models/polls.py class Poll(meta.Model): db_table = 'polls' fields = ( meta.SlugField('slug', 'slug', unique_for_month='pub_date'), meta.CharField('question', 'question', maxlength=255), meta.DateTimeField('pub_date', 'date published'), meta.DateTimeField('expire_date', 'expiration date'), meta.ManyToManyField(core.Site), meta.PositiveSmallIntegerField('choice_votes', 'choice votes', default=1, help_text=quot;How many choices a person can vote for at once.quot;), ) ordering = ('-pub_date',) exceptions = ('AlreadyVoted', 'PollClosed', 'InvalidVote', 'TooFewChoices', 'TooManyChoices') get_latest_by = 'pub_date' admin = meta.Admin( fields = ( (None, {'fields': ('question', 'slug', 'pub_date', 'expire_date', 'sites', 'choice_vo ), list_display = ('question', 'pub_date', 'expire_date'), list_filter = ('sites', 'pub_date'), date_hierarchy = 'pub_date', search_fields = ('question', 'slug'), )
  10. 10. r9000 Django 0.91
  11. 11. ellington/polls/models/polls.py class Poll(meta.Model): slug = meta.SlugField(unique_for_month='pub_date') question = meta.CharField(maxlength=255) pub_date = meta.DateTimeField('date published') expire_date = meta.DateTimeField('expiration date') sites = meta.ManyToManyField(core.Site) choice_votes = meta.PositiveSmallIntegerField(default=1) class META: db_table = 'polls' ordering = ('-pub_date',) exceptions = ('AlreadyVoted', 'PollClosed', 'InvalidVote', 'TooFewChoices', 'TooManyChoic get_latest_by = 'pub_date' admin = meta.Admin( fields = ( (None, {'fields': ('question', 'slug', 'pub_date', 'expire_date', 'sites')}), ), list_display = ('question', 'pub_date', 'expire_date'), list_filter = ('sites', 'pub_date'), date_hierarchy = 'pub_date', search_fields = ('question', 'slug'), )
  12. 12. r17000+ Trunk(ish)
  13. 13. ellington/polls/models.py class Poll(models.Model): slug = models.SlugField(unique_for_month='pub_date') question = models.CharField(maxlength=255) pub_date = models.DateTimeField('date published') expire_date = models.DateTimeField('expiration date') sites = models.ManyToManyField(core.Site) choice_votes = models.PositiveSmallIntegerField(default=1) class Meta: ordering = ('-pub_date',) get_latest_by = 'pub_date' class Admin: list_display = ('question', 'pub_date', 'expire_date') list_filter = ('sites', 'pub_date') date_hierarchy = 'pub_date' search_fields = ('question', 'slug') save_as = True
  14. 14. newforms-admin
  15. 15. ellington/polls/admin.py from ellington.polls.models import Poll class PollOptions: list_display = ('question', 'pub_date', 'expire_date') list_filter = ('sites', 'pub_date') date_hierarchy = 'pub_date' search_fields = ('question', 'slug') save_as = True admin.site.register(Poll, PollOptions)
  16. 16. Want to hack on Ellington? jacob@jacobian.org
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×