zoukankan      html  css  js  c++  java
  • 外键查询

    class AuthorInfo(models.Model):
        name = models.CharField(max_length=100)
        gender = models.CharField(max_length=100)
        def __str__(self):
            return self.name
    
        class Meta:
            verbose_name = "作者表"
            verbose_name_plural = verbose_name
    
    
    
    
    class BookInfo(models.Model):
        author = models.ForeignKey(AuthorInfo,related_name="zuozhe",on_delete=models.CASCADE)
        title = models.CharField(max_length=100)
        price = models.CharField(max_length=100)
        def __str__(self):
            return self.title
    
        class Meta:
            verbose_name = "图书表"
            verbose_name_plural = verbose_name

    from .models import AuthorInfo,BookInfo
    admin.site.register(AuthorInfo)
    admin.site.register(BookInfo)

      

    通过外键所在表查询另外一张表的属性:

    BookInfo.objects.filter().values("author__name")

    通过另一张表的属性获取外键所在表的对象:

    objs = BookInfo.objects.filter(author__gender="男")

    通过外键所在表的实例,查找对应另一张表的实例:

    obj = BookInfo.objects.all().first()

    obj = AuthorInfo.objects.filter(zuozhe=obj).all()

    通过外键所在表的属性,查找另一张表的对象: related_name的用处

    obj = AuthorInfo.objects.filter(zuozhe__title__icontains="书").all()
    for obj in obj:
    print(obj.name, obj.gender)

    张三 男
    张三 男
    小红 女
    小红 女

    支持去重

    obj = AuthorInfo.objects.filter(zuozhe__title__icontains="书").distinct()

     支持属性去重:

    obj = AuthorInfo.objects.filter(zuozhe__title__icontains="书").values("gender").distinct()
    for obj in obj:
    print(obj)

    {'gender': '男'}
    {'gender': '女'}

  • 相关阅读:
    第二次冲刺阶段第四天
    第二次冲刺阶段第三天
    第二次冲刺阶段第二天
    人月神话阅读笔记03
    第二次冲刺阶段第一天
    学习进度条(十二)
    课堂练习-找水王
    学习进度条(十一)
    学习进度表第十周
    构建之法阅读笔记06
  • 原文地址:https://www.cnblogs.com/realadmin/p/11946610.html
Copyright © 2011-2022 走看看