gpt4 book ai didi

django - 以编程方式创建Django组

转载 作者:行者123 更新时间:2023-12-04 03:07:40 25 4
gpt4 key购买 nike

我想以编程方式在Django中创建组,而不是在 View 中创建组,而是在模型中创建组(例如,使用迁移)。怎么做?在google和docs中没有关于它的信息(至少在这里没有: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)列表中的 operations条目调用。您的迁移应使用类似的功能以及需要进行任何其他数据迁移的方式来进行组创建。

您可能应该使用类似
Group = apps.get_model("auth", "Group")
my_group, created = Group.objects.get_or_create(name='group1')

创建组,以防表中已有该名称的组。

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

P.S.您需要将 migrations.RunPython条目放在 operations列表中的正确位置;例如,如果将其放在删除所需表的操作之后,它将无法正常工作。

关于django - 以编程方式创建Django组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105507/

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