首页 > 解决方案 > 我可以在代理模型中覆盖 ForeignKey 的 related_name 吗?

问题描述

我有一个 Django 模型ActivityLog来跟踪系统中的一般用户相关活动。我创建了一个代理模型StudentActivityLog,在其中收集了与用户活动相关的学生特定业务逻辑。这个代理模型也有一个自定义模型管理器。

class ActivityLog(models.Model):
    person = models.ForeignKey(
        "Person", on_delete=models.PROTECT, related_name="activity_logs"
    )
    # ...

class StudentActivityLogManager(models.Manager):
    def custom_something():
        # ...

class StudentActivityLog(models.Model):
    objects = StudentActivityLogManager()
    class Meta:
        proxy = True
    # ...

当我有一个Person实例时,我希望能够编写person.student_activity_logs.custom_something()访问学生模型管理器的方法。但是,此属性不可用,我只能访问person.activity_logs但显然没有custom_something(). 我知道这StudentActivity.objects.filter(person=student).custom_something()会起作用,但我想知道我是否可以避免这种乏味的格式。

标签: djangodjango-models

解决方案


推荐阅读