每次创建新用户时,如何使用一些默认/初始数据填充下表?我知道这个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,
....
)
关于django 在创建新用户时用一些数据填充数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19424669/