zoukankan      html  css  js  c++  java
  • Django 外键的操作

    from django.db import models
    
    
    class Publisher(models.Model):
        name = models.CharField(max_length=32, verbose_name='出版社名称')
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name = "name"
            verbose_name_plural = verbose_name
    
    
    class Book(models.Model):
        name = models.CharField(max_length=32, verbose_name='书名')
        pub = models.ForeignKey('Publisher', on_delete=models.CASCADE,related_name='books', related_query_name='book')
    
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name = 'name'
            verbose_name_plural = verbose_name
    ########################
    # 基于对象的查询
    book_obj = models.Book.objects.get(pk=1)
    # 正向查询
    book_obj.pub    # 所关联的对象
    book_obj.pub_id # 所关联的对象id
    # 反向查询
    pub_obj = models.Publisher.objects.get(pk=1)
    
    # 不指定related_name 使用 类名下列_set
    pub_obj.book_set    # 关系管理对象
    pub_obj.book_set.all()  # 所关联的所有的书籍对象
    
    # 指定 related_name = 'books'
    pub_obj.books.all()
    
    # 基于字段的查询
    ret = models.Book.objects.filter(name='xxxxxxxx')
    ret = models.Book.objects.filter(pub__name='出版社')
    
    ret = models.Publisher.objects.filter(name='出版社')
    
    # 不指定 related_name
    ret = models.Publisher.objects.filter(book__name='xxxxxxx')
    # 指定 related_name='books'
    ret = models.Publisher.objects.filter(books__name='xxxxxxx')
    # 指定related_query_name='xxx'
    ret = models.Publisher.objects.filter(xxx__name='xxxxx')

    作者:Star-Hitian,转载请注明原文链接:https://www.cnblogs.com/Star-Haitian/p/15129287.html

  • 相关阅读:
    关于日期
    修改video标签自带按钮的默认样式
    vue相关
    手机
    国内优秀npm镜像
    一些技能整理
    小程序
    $('.mydiv>ul')和$('.mydiv ul')的不同
    Python 字符编码
    Python 正则表达式 补充
  • 原文地址:https://www.cnblogs.com/Star-Haitian/p/15129287.html
Copyright © 2011-2022 走看看