gpt4 book ai didi

django - 在 Django 中扩展一个 contrib 模型的字段

转载 作者:行者123 更新时间:2023-12-02 05:11:35 25 4
gpt4 key购买 nike

这种情况我遇到过好几次了。

如果我在 contrib 中有一些我通常喜欢的东西,但我想对一个字段进行一些小的调整,我该怎么做?

我不想把婴儿和洗澡水一起倒掉。

举个例子,以 auth.user 为例(与似乎流行的观点相反,我认为它通常是在正确的轨道上)。我想为 auth.user 与 auth.group 的关系创建一个直通模型。

如何在不修改 django 的情况下执行此操作?

最佳答案

auth.User 是一种特殊情况,因为 User 模型与 Django 的许多部分相关联,修改它很棘手(尽管并非不可能,正如其他人指出的那样)。我最好的建议是质疑为什么您不想修改 Django 源代码。您可以为开发分支的负责人拉取源代码,或者获取与编号版本相对应的标记版本。随意修改代码并使用 svn updatesvn diffsvn patch 的某种组合来迁移您的更改。

接下来,可以在您的代码中修改 contrib 模块,因为 Python 是解释型的并且是动态类型的。如果这样做,您需要考虑解析/处理顺序,因为某些操作可能已经使用了原始模块。下面是我从其他人(可能在 SO 上)那里得到的一个例子,说明如何从 User 添加一个方便的前向引用到相关的 Profile 对象:

from django.db.models import Model
from django.contrib.auth.models import User

class UserProfile(Model):
user = ForeignKey(User, unique=True)
phone = CharField(verbose_name="phone number", blank=False, max_length='20')

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

不过,我认为该策略不适用于在 django.contrib.auth.models.User 中添加/修改 ModelFields

最后,对于将组与用户相关联的具体示例,您应该通过 creating a UserProfile model 查看是否可行.我最初的猜测是它应该很容易。

关于django - 在 Django 中扩展一个 contrib 模型的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5292594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com