【发布时间】:2020-04-02 03:14:42
【问题描述】:
我正在开发网络应用程序,只有管理员可以创建新用户。在我的应用中,有两种模型,一种用于创建用户,另一种用于创建用户配置文件,如下所示。
class User(AbstractBaseUser):
User_Type = [
('admin', 'Admin'),
..............
]
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
email = models.EmailField(_('email address'), unique=True)
username = models.CharField(_("Username"), max_length=50, unique=True)
user_type = models.CharField(_("User Type"), choices=User_Type, default='none',)
..............
另一种模型是用于存储用户信息。
class UserProfile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, verbose_name=_("User"), on_delete=models.CASCADE)
first_name = models.CharField(_("First name"), max_length=50)
last_name = models.CharField(_("Last name"), max_length=50)
dob = models.DateField(_("D.O.B"), auto_now=False, auto_now_add=False, blank=False, null=False)
profile_image = models.ImageField(_("Profile picture"), upload_to='user/profile/', blank=True)
............
我想要的是,如果管理员创建了任何用途,它会自动重定向到个人资料页面以添加个人资料。
forms.py 代码在这里。
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = User
fields = ('email', 'username', 'user_type')
和
class UserProfileForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = '__all__'
views.py 在这里
class AddUserView(CreateView):
model = User
form_class = CustomUserCreationForm
template_name = "users/add-user.html"
def form_valid(self, form):
form.save()
return redirect('users:profile-add')
我在 stackoverflow 上尝试了一些已发布的解决方案,但没有一个有效。 Creating user profile pages in Django Creating a extended user profile 我不知道我做错了什么。
【问题讨论】:
-
这哪里失败了?您是否成功创建新用户?不是重定向到你想要的地方吗?
-
是的,但它不会创建 profile 。它还会重定向到用户个人资料。
标签: django