您的位置:首页 > 编程语言 > Python开发

django 外键 ,django __

2016-09-29 16:32 274 查看
data

sqlite> select * from author;
id      name    age
1       jim     12
2       tom     11
sqlite> select * from book;
id      name    author_id
1       learn java      1
2       learn python    1
3       learn c++       2
models.py

# -*- coding: UTF-8 -*-
from __future__ import unicode_literals
from django.db import models

# Create your models here.

class Author(models.Model):
name = models.CharField(verbose_name='姓名', max_length=50)
age = models.IntegerField(verbose_name='年龄')

class Book(models.Model):
name = models.CharField(verbose_name='书名', max_length=100)
author = models.ForeignKey(Author, verbose_name='作者')
执行语句

>>> Author.objects.filter(book__name='learn java')
[<Author: jim>]
>>> author = Author.objects.get(pk=1)
>>> author.book_set.all()
[<Book: learn java>, <Book: learn python>]
假如把类Book改成这样

class Book(models.Model):
name = models.CharField(verbose_name='书名', max_length=100)
author = models.ForeignKey(Author, verbose_name='作者', related_name='bs', related_query_name='b')
那么上面查询代码就应该写成这样

>>> Author.objects.filter(b__name='learn java')
[<Author: jim>]
>>> author = Author.objects.get(pk=1)
>>> author.bs.all()
[<Book: learn java>, <Book: learn python>]
如果book表里有两个字段都外键关联author表,这时related_name就非常有用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: