A talk delivered to the Philadelphia Python User Group on 09/17/15
Models form the backbone of most Django sites. They contain the fields and behaviors of the data your site is using. The proper planning and implementation of models is one of the first steps to creating powerful and reusable Django apps. It’s also crucial for avoiding pitfalls and complex workarounds down the line. In this talk you’ll hear about: -
• Django model fields and methods
• Model inheritance
• Relational databases
• Migrations
• How to access the data stored within your models
5. Django
• Models - Manage our data
• Views - Query the data
• Template - Present the data
6. Django
• Models - Manage our data
• Views - Query the data
• Template - Present the data
7. Models
• The single definitive source of information
about your website data
• Uses Django’s Object-relational Mapper
• Each model maps to a single database table
• Each field maps to a column within that table
8. Talent Management The Happiness Advantage
CorpU Promo
My Video Portfolio
Videos | About | Contact
Supply Chain Management
http://www.myvideoportfolio.com/videos
9. Supply Chain Management
My Video Portfolio
Videos| About | Contact
http://www.djangodjunction.com/djangos/01
This course explores end-to-end supply
chain management. This video takes a look
at the main elements of a modern supply
chain and…
10. Supply Chain Management
My Video Portfolio
Videos| About | Contact
http://www.djangodjunction.com/djangos/01
TITLE
DESCRIPTION
Embed
This course explores end-to-end supply
chain management. This video takes a look
at the main elements of a modern supply
chain and…
11. models.py
from django.db import models
class Video(models.Model):
title = models.CharField(max_length = 200)
description = models.TextField()
embed_key = models.IntegerField()
date_completed = models.DateField()
13. id title description embed_key date_completed
1 Ursa Motors In this video… 679210 2014-10-01
2 Sea Box
Sea Box is a
company that…
933750 2015-03-15
3
Critical
Thinking
In Critical
Thinking…
876025 2014-09-23
4 CorpU Promo
CorpU’s
platform…
867302 2015-02-05
video
14. models.py
from django.db import models
class Video(models.Model):
title = models.CharField(max_length = 200)
description = models.TextField()
embed_key = models.IntegerField()
date_completed = models.DateField()
22. models.py
from django.db import models
from django.core.exceptions import ValidationError
def validate_embed(value):
valid_embed = (checks embed at vimeo.com)
if not valid_embed:
raise ValidationError(‘That embed code does not
exist at vimeo.com’)
class Video(models.Model):
embed = integerField(validators = [validate_embed])
26. Many to One
One row of a database
table relates to many rows
of another.
27. title … client
… Client: 01
… Client: 02
… Client: 01
… Client: 03
… Client: 01
… Client: 02
id name website …
01 … …
02 … …
03 …
Video
Client
Many to One
28. Many to One
class Client(models.Model):
name = models.CharField(unique = True)
website = models.URLField()
class Video(models.Model):
client = models.ForeignKey(Client)
29. Many to Many
Many rows of a database
table relate to many rows of
another.
30. … role
…
role: Camera Op,
Editor, Producer
…
role: Camera Op,
Editor
… role: Producer
… role: Editor
name …
Camera Op …
Editor …
Producer …
Video
Role
Many to Many
31. Many to Many
class Role(models.Model):
name = models.CharField(unique = True)
class Video(models.Model):
role = models.ManyToManyField(Role)
32. One to One
One row of a database
table relates to one row of
another.
33. … file
… File: 1
… File: 2
… File 3
… FIle 4
Video
One to One
id path
1
2
3
4
File
34. One to One
class File(models.Model):
drive = models.CharField()
path = models.FilePathField()
class Video(models.Model):
file = models.OneToOneField(File)
47. Model Methods
from django.db import models
class Video(models.Model):
title = models.CharField(max_length = 200)
def __str__(self):
return self.title
49. Model Methods
class Role(models.Model):
name = models.CharField(unique = True)
class Video(models.Model):
def is_full_stack(self):
full_stack = True
for role in Role.objects.all():
if role not in self.role.all():
full_stack = False
return full_stack