我正在创建一个应用程序,其中我有不同的用户,这些用户具有用户模型没有的一些属性,为此我使用 oneToone 关系将用户身份验证模型从 django 扩展到每个不同的用户。
我遇到的问题是,当我尝试创建一个从 django 扩展用户模型的名为 MusicLover 的用户时,我收到一个错误消息,告诉我我有一个不存在的列,它基本上是一个名为的列:使与用户模型的关系+ '_id'
这是我的 models.py 文件:
from django.db import models
from django.contrib.auth.models import User
class Genero(models.Model):
gen_nombre = models.CharField(max_length=50)
gen_id = models.AutoField(primary_key=True)
def __unicode__(self):
return self.gen_nombre
class MusicLover(models.Model):
us_fecha_nacimiento = models.DateField()
user = models.OneToOneField(User)
ml_genero = models.ManyToManyField(Genero)
ml_id = models.AutoField(primary_key=True)
这是我的 urls.py 文件:
从 django.conf.urls 导入模式、包含、url
urlpatterns = 模式('',
url(r'^$', 'socialweb.views.index'),
url(r'^registro/$', 'socialweb.views.register'), # ADD NEW PATTERN!
url(r'^registroBanda/$', 'socialweb.views.registerBand'),
url(r'^registroEvento/$', 'socialweb.views.registerEvent'),
url(r'^login/$', 'django.contrib.auth.views.login', {'template_name':'auth/login.html'}),
url(r'^logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}),
)
这是调用 ^registro$ 的方法,该方法在我的 view.py 文件中注册
def register(request): 注册 = False
if request.method == 'POST':
user_form = UserForm(data=request.POST)
musiclover_form = MusicLoverForm(data = request.POST)
if user_form.is_valid and musiclover_form.is_valid():
user = user_form.save(commit=False)
user.set_password(user.password)
user.save()
musiclover = musiclover_form.save(commit=False)
musiclover.ml_us_id = user
musiclover.save()
registered=True
return HttpResponseRedirect('/')
else:
print user_form.errors, musiclover_form.errors
else:
user_form = UserForm()
musiclover_form = MusicLoverForm()
return render(request, 'registro.html', {'user_form':user_form, 'musiclover_form':musiclover_form, 'registered':registered})
最后是我必须创建用户的表单:
类 UserForm(ModelForm): 密码 = forms.CharField(widget=forms.PasswordInput()) #email = forms.EmailField(label='Email')
class Meta:
model = User
fields = ('username','email','first_name','last_name')
class MusicLoverForm(ModelForm):
#us_fecha_nacimiento = forms.DateField(label='fecha de nacimiento')
class Meta:
model = MusicLover
fields = ('ml_genero','us_fecha_nacimiento')
我得到的错误如下:
表 socialweb_musiclover 没有名为 user_id 的列
如果有人能告诉我为什么我无法创建用户,请不胜感激。