django 在创建新用户时用一些数据填充数据库

标签 django django-models django-forms

每次创建新用户时,如何使用一些默认/初始数据填充下表?我知道这个https://docs.djangoproject.com/en/dev/howto/initial-data/ ,但这仅在我创建模型时有效。在这里,我想在创建新用户时插入一些默认条目。

此外,当我创建一个新用户时,如何自动将他添加到具有静态组 ID 的给定组中?

模型.py

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

class Category(models.Model):
    name = models.CharField(max_length=50)
    user = models.ForeignKey(User)

class Feed(models.Model):
    url = models.URLField()
    name = models.CharField(max_length=50)
    created = models.DateTimeField(auto_now_add=True)
    description = models.TextField(blank=True)
    category = models.ForeignKey(Category)
    user = models.ForeignKey(User)

View .py

def signup(request):
    if request.method == 'POST':
        form = UserCreationForm1(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect("/accounts/login")
    else:
        form = UserCreationForm1()
    return render(request, "registration/signup.html", {
        'form': form,

    })

表单.py

class UserCreationForm1(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ('username', 'email')

非常感谢!

最佳答案

您正在寻找的是 Django 的信号框架。

from django.db.models.signals import post_save
from django.dispatch import receiver

from django.contrib.auth.models import User, Group
from my_app import Category, Feed

@receiver(post_save, sender=User)
def init_new_user(instance, created, raw, **kwargs):
    # raw is set when model is created from loaddata.
    if created and not raw:
        instance.groups.add(
            Group.objects.get(name='new-user-group'))

        Category.objects.create(
            name="Default", user=instance)

        Feed.objects.create(
            user = instance,
            name = "%s's Feed" % instance.first_name,
            ....
        )

编号:https://docs.djangoproject.com/en/1.5/topics/signals/

关于django 在创建新用户时用一些数据填充数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19424669/

相关文章:

python - Django Rest Framework 列表和详细 View 重叠

django - settings.py 中模板文件夹的 Django 路径不正确

django - 在 Django 中获取几个唯一的字段值

javascript - 如何在 Django 中应用 csrf_token

python - Celeryd 运行多个守护进程

database - 在django数据库中增加值

python-3.x - 使用 Django 序列化程序类保存嵌套数据

Django:在更新模型之前,我想 "look at"它以前的属性

Django:如何显示我自己的动态创建的字段

具有未知数量的复选框字段和多个操作的 Django 表单