【问题标题】:Override django's RelatedManager for model为模型覆盖 django 的 RelatedManager
【发布时间】:2012-05-11 07:57:25
【问题描述】:

我如何覆盖关系经理?例如:

user.entry_set # django.db.models.fields.related.RelatedManager

但我需要自己的经理。我尝试了这段代码,但这不起作用:

class EntryManager(models.Manager):
    use_for_related_fields = True

谢谢。

【问题讨论】:

  • 出于好奇,您认为为什么需要自定义管理器?
  • 为什么use_for_related_fields“不工作”?这就是它的for,所以如果它不起作用,那么你的代码中有一些东西搞砸了。 始终发布代码。
  • @ChrisPratt 实际上它只适用于 OneToOneField 关系 (ticket)。
  • @DrTyrsa:实际上是倒退了。票证是关于在应该使用时用于相关经理的默认经理。在他确实希望使用它的 OP 的情况下,票证不适用。
  • @ChrisPratt 不只是得到了,它是倒退的。阅读票证中的讨论。无论如何,你试过了吗?它有效吗?我试过了。它没有。

标签: django relation


【解决方案1】:

您的任务需要相当老套的代码,这将很难维护和理解(如果可能的话)。

这个怎么样?

class EntryManager(models.Manager):
    def by_user(self, user):
        # do anything you want

# usage
Entry.objects.by_user(user=user)

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 2018-03-07
    • 2018-10-07
    • 1970-01-01
    • 2020-06-14
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多