zoukankan      html  css  js  c++  java
  • Django(6)

    为什么不用_set

    related_name和related_query_name的区别

    related_name将成为相关对象的属性,允许您使用外键对模型进行“倒退”。例如,如果ModelA有像下面这样的字段,那么model_b = ForeignKeyField(ModelB, related_name='model_as')这将使您能够通过去访问ModelA与您的ModelB实例相关的实例model_b_instance.model_as.all()请注意,这通常是用复数形式编写的外键,因为外键是一对多关系,并且该等式的许多方面是具有在其上声明的外键字段的模型。

    文档中进一步的解释是有帮助的。https://docs.djangoproject.com/en/1.10/topics/db/queries/#backwards-related-objects

    related_query_name用于Django查询集。它允许您过滤外键相关字段的反向关系。为了继续我们的例子 - 将一个字段设置Model A为: model_b = ForeignKeyField(ModelB, related_query_name='model_a')将使您可以model_a用作查询集中的查找参数,如:ModelB.objects.filter(model_a=whatever)使用单数形式更常见related_query_name正如文档所说,没有必要指定两者(或其中之一)related_namerelated_query_nameDjango具有合理的默认值。


    # 统计出每个出版社买的最便宜的书的价格
    ret=models.Publisher.objects.first().book_set.all()
    ret=models.Publisher.objects.get(id=1).books.all()
    book_set可以用books代替related_name用在get上
    ret=models.Publisher.objects.filter().annotate(c=Min('zhangzhao__price')).values('name','zhangzhao__title','c')
    print(ret)
    book_set可以用books代替related_query_name用在filter上
  • 相关阅读:
    大数据的前景?
    PriorityBlockingQueue深度解析(好文)
    深入CAS原理
    common-lang3工具类-使用手册
    gitlab搭建
    RestTemplate转码bug
    论tigergraph边的方向性
    关于java的wait方法的深入分析
    openjdk的源码下载方式
    一个奇怪的urlencode转码问题
  • 原文地址:https://www.cnblogs.com/shanjinghao/p/9207824.html
Copyright © 2011-2022 走看看