当前位置: 首页 > 面试题库 >

创建超级用户时创建日期行

皇甫高阳
2023-03-14
问题内容

models.py

TITLE = (
    ('Classroom', 'Classroom'),
    ('Playground', 'Playground'),
    ('Staff Room','Staff Room'),
)

class Location(models.Model):
    user = models.ForeignKey(User,null=True)
    title = models.CharField('Incident Type', max_length=200,default=TITLE)
    parent_location_id = models.CharField('Parent Location', max_length=100, null=True, blank=True)
    is_active = models.BooleanField('Is Active', default=True)

def location_title(sender, instance, created, **kwargs):        
    if instance.is_superuser and not instance.location.is_active:

        instance.location.is_active=True
        instance.location.save()

post_save.connect(location_title, sender=User)

我想在一定条件下将默认数据插入数据库中,这应该在通过manage.py createsuperuser注释创建超级用户时发生。

我不知道使用django是可行的,但这是必要条件。我尝试了上面的代码。创建超级用户时收到错误“
AttributeError:’User’对象没有属性’location’”。

我需要的样品如下

样品输出


问题答案:

尝试将此功能用作信号处理程序:

def location_title(sender, instance, created, **kwargs):
    # Don't fire up on updates.
    if not created:
        return

    # Only handle new superusers.
    if not instance.is_superuser or not instance.is_active:
        return

    # Create a `Location` entry for new superuser.
    l = Location(user_id=instance.pk)
    l.save()

post_save.connect(location_title, sender=User)

向模型字段添加选择:

Django
CharField有一个命名参数choices,可让您为最终用户提供可能值的列表,并以表格形式对其进行正确验证。可迭代的格式如下<internal_value>, <display_value>。将字段传递给choices参数后,您可以使用方法访问与其内部值相关的显示值instance.get_<field_name>_display()

可迭代的选择可能如下所示:

class Location(models.Model):
    class Title:
        CLASSROOM = 'classroom'
        PLAYGROUND = 'playground'
        STAFF_ROOM = 'staff_room'

    TITLE_CHOICES = (
        (Title.CLASSROOM, 'Classroom'),
        (Title.PLAYGROUND, 'Playground'),
        (Title.STAFF_ROOM, 'Staff Room'),
    )

    user = models.ForeignKey(User,null=True)
    title = models.CharField('Incident Type', max_length=200,choices=TITLE_CHOICES,default=Title.CLASSROOM)
    parent_location_id = models.CharField('Parent Location', max_length=100, null=True, blank=True)
    is_active = models.BooleanField('Is Active', default=True)

最终的解决方案如下:

class Location(models.Model):
    class Title:
        CLASSROOM = 'classroom'
        PLAYGROUND = 'playground'
        STAFF_ROOM = 'staff_room'

    BASE_LOCATION = Title.CLASSROOM

    TITLE_CHOICES = (
        (Title.CLASSROOM, 'Classroom'),
        (Title.PLAYGROUND, 'Playground'),
        (Title.STAFF_ROOM, 'Staff Room'),
    )

    user = models.ForeignKey(User,null=True)
    title = models.CharField('Incident Type', max_length=200,choices=TITLE_CHOICES,default=Title.CLASSROOM)
    parent_location_id = models.CharField('Parent Location', max_length=100, null=True, blank=True)
    is_active = models.BooleanField('Is Active', default=True)


def location_title(sender, instance, created, **kwargs):
    # Don't fire up on updates.
    if not created:
        return

    # Only handle new superusers.
    if not instance.is_superuser or not instance.is_active:
        return

    # Create a `Location` entry for new superuser.
    base = Location(user_id=instance.pk, title=Location.BASE_LOCATION)
    base.save()

    for value, _ in Location.TITLE_CHOICES:
        if value == Location.BASE_LOCATION:
            continue

        l = Location(user_id=instance.pk, title=value, parent_location_id=base.pk)
        l.save()

post_save.connect(location_title, sender=User)


 类似资料:
  • 我有一个java代码,它将一个对象插入到Mongo DB的一个集合中。当我插入这个新对象时(下面给出了该对象的详细信息),我还需要插入一个创建日期。处理这件事的最好方法是什么?由于我们有不同的时区,我想确保我遵循了正确的方法来保存和读取日期字段。 文档结构:我需要让我的java代码创建一个系统日期,以正确的格式将创建日期插入Mongo DB。 {“_id”:对象id(“568ac782e4b0fb

  • 问题内容: 我目前有两个用于指定日期和时间的UI组件。这两个组件都返回分别代表日历日期和时间的实例。我的问题是: 组合这些值以创建表示日期和时间的实例的最佳方法是什么? 我想避免依赖Joda或其他第三方库。 我当前的解决方案如下所示(但是有更好的方法吗?): 问题答案: 您可以将此弃用的代码转换为Calendar以获取解决方案。 然后我的答案是: 不,如果不使用joda,您将无法做得更好 NB j

  • 问题内容: 我正在使用Java API创建Elasticsearch Connection。我正在使用TransportConnection,并且需要设置连接超时。 我尚未配置任何属性,连接需要三分钟才能给我超时。 有人知道是否存在用于设置超时值的属性吗? 解冻。 问题答案: 另请参阅ES文档页面中的以下内容: 故障检测

  • WordPress有一个管理仪表板。在仪表板中,我们可以作为管理员添加新用户。我想在管理员添加新用户时在MySQL中创建一个表。例如,我创建了一个名为John Smith的用户,其用户名为user1;当我成功添加该用户时,将在名为user1的数据库中创建一个表。

  • 主要内容:创建用户的步骤在企业开发中会为每位程序员、测试人员等相关人员分配一个账号,用户通过使用svn客户端连接svn服务时需要输入账号和密码,svn服务对账号和密码进行校验,输入正确可以继续访问,当用户访问仓库下某个目录时,svn服务对用户进行授权,如果用户拥有该目录的访问权限方可访问。 判断账号和密码输入是否正确的过程即认证过程。 判断用户是否拥有目录的读/写权限时即授权过程。 创建用户的步骤   查看已创建的用户:

  • 接口说明 创建用户 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 POST /api/user/1.0.0/create 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 username string form 是 用户名 password string form 是 密码 phone string form 是 手机