Django用户模型,添加功能

28 浏览
0 Comments

Django用户模型,添加功能

我想要在Django的默认用户模型中添加一个新函数以检索相关的模型类型列表。

比如Foo模型:

class Foo(models.Model):
    owner = models.ForeignKey(User, related_name="owner")
    likes = models.ForeignKey(User, related_name="likes")

........

    #at some view
    user = request.user
    foos= user.get_related_foo_models()

这该如何实现呢?

admin 更改状态以发布 2023年5月24日
0
0 Comments

这是对 @Lakshman Prasad 回答的更新。但是给出了一个完整的示例:

在任何一个你的 apps 中创建一个文件 monkey_patching.py

#app/monkey_patching.py
from django.contrib.auth.models import User 
def get_user_name(self):
    if self.first_name or self.last_name:
        return self.first_name + " " + self.last_name
    return self.username
User.add_to_class("get_user_name",get_user_name)

并在应用的 __init__.py 文件中导入它。例如:

#app/__init__.py
import monkey_patching

0
0 Comments

您可以将方法添加到 User

from django.contrib import auth
auth.models.User.add_to_class('get_related_foo_models', get_related_foo_models)

请确保此代码位于 models.py 或其他在 Django 启动时导入的文件中。

0