Hel*_*nar 28 django django-models django-users
我想在Django的默认用户模型中添加一个新函数,用于检索模型类型的相关列表.
这样的Foo模型:
class Foo(models.Model):
owner = models.ForeignKey(User, related_name="owner")
likes = models.ForeignKey(User, related_name="likes")
Run Code Online (Sandbox Code Playgroud)
........
#at some view
user = request.user
foos= user.get_related_foo_models()
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?
Lak*_*sad 43
你可以添加一个方法 User
from django.contrib import auth
auth.models.User.add_to_class('get_related_foo_models', get_related_foo_models)
Run Code Online (Sandbox Code Playgroud)
确保您在models.py或其他一些在django启动时导入的文件中包含此代码.
suh*_*lvs 12
这是@Lakshman Prasad的答案的更新.但是一个完整的例子:
monkey_patching.py在你的任何一个中创建一个文件apps::
#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)
Run Code Online (Sandbox Code Playgroud)
并将其导入应用程序的__init__.py文件中.即::
#app/__init__.py
import monkey_patching
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10630 次 |
| 最近记录: |