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>]>

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM