0

ユーザーモデルにないいくつかの属性を持つさまざまなユーザーがいるアプリを作成するために、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': '/'}),
)

これは、view.py ファイルに登録されている ^registro$ を呼び出すメソッドです。

def register(リクエスト): registered = 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): password = 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 という名前の列がありません

なぜ私がユーザーを作成できないのかを誰かが教えてくれたら、それを感謝します。

4

0 に答える 0