允许 Django 用户创建另一个

Posted

技术标签:

【中文标题】允许 Django 用户创建另一个【英文标题】:Allow Django user to create another one 【发布时间】:2018-10-10 01:24:05 【问题描述】:

首先,我是初学者。

我正在为我的家人创建一个网站,让他们在圣诞节交换礼物。每个人都可以为每个人发布礼物创意。

我想让父母为他们的孩子创建一个帐户并能够管理他们。例如。重命名、删除、更改头像...

我有一个与用户关联的配置文件模型...

我正在考虑创建一个子模型...?但我被困住了。

【问题讨论】:

向我们展示您迄今为止的尝试! @StefGou 这是来自 Vitor Freitas 的一篇很好的博文,涵盖了您想要完成的工作simpleisbetterthancomplex.com/tutorial/2018/01/18/… 如果您是初学者并想学习 Django,强烈推荐这个网站! 您可以添加代码以便更好地理解问题。您可以为孩子和父母添加两个注册表单,将孩子模型与父母链接并授予链接的父母编辑或重命名等权限。 【参考方案1】:

我认为一种可能性是制作一个与用户类具有一对一关系的模型,正如文档所述:

https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#extending-the-existing-user-model

并在该模型中放置您想要可编辑的自定义数据,特权角色可以编辑非特权角色

我要留下一个我用过的例子:

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

class Profile(models.Model):
    """Profile model

    Proxi model that extends de base data
    with orher information
    """
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    website = models.URLField(max_length=200, blank=True)
    biography = models.TextField(blank=True)
    phone_number = models.CharField(max_length=20, blank=True)

    picture = models.ImageField(
        upload_to="users/pictures",
        blank=True,
        null=True)

    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.user.username

希望对你有用

【讨论】:

然后您可以编辑管理站点以添加或编辑新用户

以上是关于允许 Django 用户创建另一个的主要内容,如果未能解决你的问题,请参考以下文章

Django,用另一个表创建用户

创建一个不允许用户另存为文本的 pdf

AWS IAM 策略允许用户创建具有特定策略/角色的 IAM 用户

如何使用 Django 显示用户配置文件? [关闭]

允许使用 django-profiles 更改用户字段(如电子邮件)

Django视图按用户向访问者显示对象