A brief history of Django model syntax
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

A brief history of Django model syntax

on

  • 5,926 views

 

Statistics

Views

Total Views
5,926
Views on SlideShare
5,916
Embed Views
10

Actions

Likes
3
Downloads
72
Comments
0

1 Embed 10

http://www.slideshare.net 10

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

A brief history of Django model syntax Presentation Transcript

  • 1. A brief history of Django model syntax
  • 2. r1000 January 2004
  • 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. 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. r4000 August 2004
  • 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. cms/apps/polls/polls.py # DO NOT EDIT THIS FILE MANUALLY. IT WAS GENERATED BY A PROGRAM.
  • 8. r8825 June 2005 First public Django release
  • 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. r9000 Django 0.91
  • 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. r17000+ Trunk(ish)
  • 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. newforms-admin
  • 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. Want to hack on Ellington? jacob@jacobian.org