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': '女'}

  • 相关阅读:
    第二篇:服务消费者Feign
    第一篇:服务的注册与发现Eureka(Finchley版本)
    记一次包扫描的犯错
    0.简单工厂-simplefactory(非23之一)
    设计模式基础
    设计模式--六大设计原则
    Java中的包
    Java内部类
    Java多线程
    Java同步
  • 原文地址:https://www.cnblogs.com/realadmin/p/11946610.html
Copyright © 2011-2022 走看看