Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Two Scoops of Django / Model
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tim
November 28, 2013
2
370
Two Scoops of Django / Model
this is my presentation about two scoops of django's chapter 6
tim
November 28, 2013
Tweet
Share
More Decks by tim
See All by tim
meta programing with django orm
timtan
1
40
Transaction_Behavior_in_Django.pdf
timtan
0
33
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Prompt Engineering for Job Search
mfonobong
0
160
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
The Pragmatic Product Professional
lauravandoore
37
7.1k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Optimizing for Happiness
mojombo
379
71k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Transcript
django model
Recap class SafeUser(models.Model): ! user = models.OneToOneField(User,related_name='safe_user') display_name = models.CharField(null=True,
blank=True, max_length=1024) ! def __unicode__(self): return self.user.username + ' ' + self.display_name
Outline • Good Packages • Model Inheritance • South Experiences
• secret behind fields’ parameter
recommended package • south • django-model-util • django extension
South • Existing Database need another command to alter the
table • South do it for you. • https://docs.djangoproject.com/en/dev/releases/ 1.7/ <— syncdb will be deprecated
shell_plus • command from djagno extension
django-model-util • STATUS model • Field Tracker ( previous value
of your model)
Basic • How much Model in an app is appropriate
• Can I write raw SQL? • Can I add index?
Model Inheritance
Situations of Inheritance • Share Common Parts • Reuse Table
• Add Extra Ability
share Common Part ! • Base Class will not be
a table • share common fields between table class CommonInfo(models.Model): name = models.CharField(max_length=100) age = models.PositiveIntegerField() ! class Meta: abstract = True
multi-table inheritance • Just inherit • will create two table
• implicitly using foreign key from django.db import models ! class Place(models.Model): name = models.CharField(max_length=50) address = models.CharField(max_length=80) ! class Restaurant(Place): serves_hot_dogs = models.BooleanField() serves_pizza = models.BooleanField()
Proxy Model • No Extra Table • add more function
class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) ! class MyPerson(Person): class Meta: proxy = True ! def do_something(self): # ... pass
South Issue • After you finish your first version of
django app • python manage.py schemamigration app — initial • add migration test if possible
normalize? • denormalized carefully
Concern Cache • Concern Cache first. than the De-normalize •
CH20 discuss more about reducing bottle neck
Fields • Blank is logical, for validation • null is
related to how database save empty value • any field without null=True specified in the model needs to have a value set (from Malcolm)
None
Manager • Looking very good • More Readable
You have two choice
the reason • First manager will be used by django
Summary • Start normalized • Don’t forget to use indexes.
• Watch out for the “gotchas” when using the null=True and blank=True • model inheritance