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

  • 相关阅读:
    【斜率DP】BZOJ 1010:玩具装箱
    【string】KMP, 扩展KMP,trie,SA,ACAM,SAM,最小表示法
    网络流24题 (一)
    关于ax+by=c的解x,y的min(|x|+|y|)值问题
    【概率】COGS 1487:麻球繁衍
    【概率】poj 2096:Collecting Bugs
    [洛谷P5376] 过河卒二
    [TJOI2019] 洛谷P5339 唱、跳、rap和篮球
    [洛谷P3851] TJOI2007 脱险
    [洛谷P3843] TJOI2007 迷路
  • 原文地址:https://www.cnblogs.com/realadmin/p/11946610.html
Copyright © 2011-2022 走看看