【发布时间】:2013-01-23 17:27:53
【问题描述】:
Django 版本:4.0.2 Django-注册版本:0.8 应用名称:userAccounts
问题: 我试图创建一个名为professor 的用户类型来扩展用户模型。我可以完成注册过程,问题是只有用户保存在数据库中,教授表保持为空。所以我认为问题可能出在保存方法中。关于可能是什么问题的一些线索?
SETTINGS.PY
AUTH_PROFILE_MODULE = "userAccounts.Professor"
模型.PY - 在这里,我创建了从用户和示例字段扩展的模型
from django.db import models
from django.contrib.auth.models import User
class Professor(models.Model):
user = models.ForeignKey(User, unique=True)
exampleField = models.CharField(max_length=100)
FORMS.PY - 保存用户后,我会在教授表中保存一个 new_profile。
from django import forms
from registration.forms import RegistrationForm
from models import Professor
from registration.models import RegistrationProfile
class CustomRegistrationForm(RegistrationForm):
exampleField = forms.CharField()
def save(self, profile_callback=None):
new_user = RegistrationProfile.objects.create_inactive_user(
username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email = self.cleaned_data['email'])
new_professor = Professor(
user=new_user,
exampleField=self.cleaned_data['exampleField'])
new_professor.save()
return new_user
注意:我关注这个帖子:Registration form with profile's field
【问题讨论】:
-
仅供参考,Professor 模型没有扩展 User 模型,它正在创建对 User 模型的外键引用。
-
另外,Django 抛出的错误是什么?
-
没有错误,我可以完成注册过程。问题是 MySQL 中 userAccounts_profile 表为空,而用户添加正确。
-
您在哪里定义 Profile 模型?上面的代码应该出错,因为 Profile 没有在任何地方定义/包含。如果您将 Profile 替换为 Professor,它应该保存到 userAccount_professor 表中。
-
感谢您的帮助!配置文件模型来自先前的尝试。我修复了它,遗憾的是问题仍然存在。我更新了代码。
标签: django model extend django-registration