python - 无法获取群组id

标签 python django python-2.7

if is_admin == True:
    admin_users = Group(name = 'Admin')
    try:
        admin_users.save()
    except:
        log.info("Admin Group already exists")
        pass
    group_id = Group.objects.get(name='Admin').id

如果在数据中我得到的“is_admin”为真,那么我将创建组“Admin”(如果不存在),然后保存它并获取该组的 ID -“Admin”。该id将以Group作为外键保存在userinfo中。 以下查询应该给我该组的 ID。

group_id = Group.objects.get(name='admin').id 

 Instead it is saying

current transaction is aborted, commands ignored until end of transaction block

我正在使用 postgresql 数据库,我不知道为什么它在执行此查询时给我错误。请告诉我如何编写查询。

最佳答案

你想要实现的目标已经在 django 中:get_or_create 。使用这个你的代码应该看起来像

group, created = Group.objects.get_or_create(name='Admin')
if created:
    log.info("Admin Group already exists")
group_id = group.pk

pk 是所有 django 模型上的一个便利属性,它始终指向主键字段,无论它是自动创建的还是显式指定的。

关于python - 无法获取群组id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787937/

相关文章:

python - 根据python中其他列表的值获取最大子列表

python - 查找一列中不以大写字母开头的条目

python - 如何使用tensorflow逼近hessian矩阵范数

python - 如何在 Python 中实例化模块

django - Django 如何知道将哪些值放入测试数据库

python - 类型错误 : 'AnonymousUser' object is not iterable

类的Python装饰器

python - 使用 try 和 except 创建复杂形式的字典

python - 使用 Python selenium 处理 'No such element exception'

django - 相同类型的字段在多个表中时的命名约定?