加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

以编程方式创建django组

发布时间:2020-12-16 23:10:08 所属栏目:Python 来源:网络整理
导读:我想在 django中以编程方式创建组,但不是在视图中创建组,而是以类似于模型(例如使用迁移)来创建组.怎么做?在谷歌和文档中没有关于它的信息(至少不在这里: https://docs.djangoproject.com/en/1.7/topics/auth/default/#groups) 解决方法 好的,您似乎正在使
我想在 django中以编程方式创建组,但不是在视图中创建组,而是以类似于模型(例如使用迁移)来创建组.怎么做?在谷歌和文档中没有关于它的信息(至少不在这里: https://docs.djangoproject.com/en/1.7/topics/auth/default/#groups)

解决方法

好的,您似乎正在使用Django 1.7的新迁移系统.这类似于但不完全类似于南方.

涉及更改表中数据的迁移是data migration,您通常需要编写Python代码来进行迁移.

从Django文档,有这个例子:

# -*- coding: utf-8 -*-
from django.db import models,migrations

def combine_names(apps,schema_editor):
    # We can't import the Person model directly as it may be a newer
    # version than this migration expects. We use the historical version.
    Person = apps.get_model("yourappname","Person")
    for person in Person.objects.all():
        person.name = "%s %s" % (person.first_name,person.last_name)
        person.save()

class Migration(migrations.Migration):

    dependencies = [
        ('yourappname','0001_initial'),]

    operations = [
        migrations.RunPython(combine_names),]

请注意,迁移期间运行的代码位于combine_names函数中,它由迁移操作列表中的migrations.RunPython(combine_names)条目调用.您的迁移应该在这样的功能中进行组创建,以及需要的任何其他数据迁移.

你应该用一条线

Group = apps.get_model("auth","Group")
my_group,created = Group.objects.get_or_create(name='group1')

以创建您的组,以防表中已经有一组该名称.

在迁移到Python文件的根级别时,不要将代码运行;如果这样做,每次导入迁移时都会运行,例如,每次运行./manage.py runserver时.

附:您需要将您的migrations.RunPython条目放在操作列表的正确位置;例如,如果您在删除其所需的表的操作后放置它将不起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读