【问题标题】:Related objects reference with custom manager使用自定义管理器引用相关对象
【发布时间】:2013-04-24 11:17:01
【问题描述】:

我想获取相关的对象引用,我想使用自定义管理器。

外面有东西吗?如何使用自定义管理器来获取这些对象?

 b.entry_set.all()

例如

b.custom_manager.entry_set.all()
b.entry_custom_manager_set.all()

【问题讨论】:

    标签: django django-models django-orm


    【解决方案1】:

    此功能的票似乎仍处于打开状态https://code.djangoproject.com/ticket/3871

    【讨论】:

    • 没问题。请留意未来的发行说明,看起来这可能已被修补但由于功能冻结而未添加到 1.5 版本中,因此它可能在 1.6 中
    【解决方案2】:

    从 Django 1.7 开始,这已经成为可能。假设您有一个模型Entry 有两个经理:

    class Entry(models.Model):
        blog = models.ForeignKey('Blog', on_delete=models.CASCADE)
        ...
        
        objects = models.Manager()  # Default Manager
        entries = EntryManager()    # Custom Manager
    

    然后您可以通过将manager 传递给entry_set 来控制您使用的管理器:

    b = Blog.objects.get(id=1)
    b.entry_set.all() # implicitly use the default manager
    b.entry_set(manager='objects').all() # explicitly use the default manager
    b.entry_set(manager='entries').all() # explicitly use the entries manager
    

    有关更多信息,请参阅using a custom reverse manager 上的文档。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多