Django 之 ForeignKey、ManyToMany的访问方式

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>]>
原文地址:https://www.cnblogs.com/liuq/p/6015609.html