zoukankan      html  css  js  c++  java
  • django 外键 ,django __

    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就非常有用了。
  • 相关阅读:
    Linux 技巧:让进程在后台可靠运行的几种方法
    What is /dev/null 2>&1?
    In the shell, what does “ 2>&1 ” mean?
    Linux命令之umask
    /dev/null简介
    What is special about /dev/tty?
    sed用法
    cobbler 更换dns和dhcp服务器为dnsmasq
    Linux下如何退出vim的一些常用命令总结
    nginx部署vue项目
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/5920385.html
Copyright © 2011-2022 走看看