models 模塊中的對象有三種對應關係:多對一,多對多,一對一。本講說明多對一關係。python
blog/models.py:mysql
from django.db import models class Employee(models.Model): name = models.CharField(max_length=20) # map 'name' field to db def __unicode__(self): return self.name class Entry(models.Model): name = models.CharField(max_length=20) def __unicode__(self): return self.name class Blog(models.Model): name = models.CharField(max_length=20) entry = models.ForeignKey(Entry) # Many-To-One Map: Blogs - Entry def __unicode__(self): return self.name
Debug 查看使用方式:sql
[root@bogon csvt03]# ipython manage.py shell reload ipy_profile_none reload ipy_user_conf Python 2.7.5 (default, Oct 9 2013, 22:06:47) Type "copyright", "credits" or "license" for more information. IPython 0.8.4 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more. In [1]: In [2]: from blog.models import Entry , Blog In [3]: Entry.objects.all() Out[3]: [<Entry: eli>, <Entry: wu>, <Entry: min>] In [4]: Blog.objects.all() Out[4]: [] In [5]: blog=Blog(name='blog',entry=Entry.objects.all()[0]) In [6]: blog Out[6]: <Blog: blog> In [7]: blog.save() In [8]: blog2=Blog(name='blog2',entry=Entry.objects.all()[1]) In [9]: blog2.save() In [10]: blog3=Blog(name='blog3',entry=Entry.objects.all()[0]) In [11]: blog3.save()
MySQL 結果:shell
mysql> select * from blog_entry; +----+------+ | id | name | +----+------+ | 1 | eli | | 2 | wu | | 3 | min | +----+------+ 3 rows in set (0.00 sec) mysql> select * from blog_blog; +----+-------+----------+ | id | name | entry_id | +----+-------+----------+ | 1 | blog | 1 | | 2 | blog2 | 2 | | 3 | blog3 | 1 | +----+-------+----------+ 3 rows in set (0.00 sec)