1、ForeignKey
情况I:
1 from django.db import models 2 3 class Blog(models.Model): 4 pass 5 6 class Entry(models.Model): 7 blog = models.ForeignKey(Blog)
访问方式:
b = Blog.objects.get(id=1)
b.entry_set.all()
情况II:
1 from django.db import models 2 3 class Blog(models.Model): 4 pass 5 6 class Entry(models.Model): 7 blog = models.ForeignKey( 8 Blog, 9 related_name='entries' 10 )
访问方式:
b = Blog.objects.get(id=1)
b.entries.all()
2、ManyToMany
情况I:
class Person(models.Model): name = models.CharField(max_length=128) def __str__(self): # __unicode__ on Python 2 return self.name class Group(models.Model): name = models.CharField(max_length=128) members = models.ManyToManyField(Person) def __str__(self): # __unicode__ on Python 2 return self.name
访问方法:
>>> beatles = Group.objects.create(name="The Beatles") >>> beatles.members.all() <QuerySet [<Person: Ringo Starr>]>
>>> ringo = Person.objects.create(name="Ringo Starr") >>> ringo.group_set.all() <QuerySet [<Group: The Beatles>]>
情况II:
1 class Person(models.Model): 2 name = models.CharField(max_length=128) 3 4 def __str__(self): # __unicode__ on Python 2 5 return self.name 6 7 class Group(models.Model): 8 name = models.CharField(max_length=128) 9 members = models.ManyToManyField(Person, related_name='groups') 10 11 def __str__(self): # __unicode__ on Python 2 12 return self.name
访问方法:
>>> beatles = Group.objects.create(name="The Beatles") >>> beatles.members.all() <QuerySet [<Person: Ringo Starr>]> >>> ringo = Person.objects.create(name="Ringo Starr") >>> ringo.groups.all() <QuerySet [<Group: The Beatles>]>