私はDjangoで少し新しく、フォームからユーザー情報を抽出しようとしていますが、そのフォーム情報をデータベースに保存しようとすると問題が発生します。ユーザー情報はデフォルトのUsersモデルから取得され、保存されているモデル( "Mensaje")には、私が使用する拡張ユーザーモデル(「Usuario」と呼ばれる)との外部キー関係があるため、フォーム情報をモデルに入れようとするとエンジンが失敗します。Django 1.9でカスタムHeritaged Userを認証する方法は?
私は、互換性のためのデフォルトのオプションをできるだけ少なくするようにしていますが、ほとんどの質問/回答が古くなっているため、私は正しい答えを見つけることができません。ここに私のコードは次のとおりです。
#app/models.py
class Usuario (models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
segundos = models.IntegerField()
id_ciudad = models.ForeignKey(Ciudad,related_name="Fk1_usuario_ciudad")
def __str__(self):
cadenaMinutos = self.user.first_name + ', tiene acumulados ' + str(int(self.segundos/60))
return cadenaMinutos
class Mensaje (models.Model):
tit_msj = models.CharField(max_length=100)
descripcion_msj = models.TextField()
email = models.EmailField()
f_msj= models.DateTimeField(default=timezone.now)
id_usr = models.ForeignKey(Usuario, related_name="Fk1_mensaje_usr")
def __str__(self):
return self.tit_msj
私に頭痛を与えているビュー:
#views.py
def contacto(request):
if request.method == "POST":
formulario = FormularioContacto(request.POST)
if formulario.is_valid():
mensaje = formulario.save(commit=False)
if request.user.is_authenticated():
mensaje.id_usr = request.user
mensaje.save()
else:
mensaje.save()
return redirect('exchange.views.gracias', correo=mensaje.email)
else:
formulario = FormularioContacto()
return render(request, 'base/contacto.html',{'form' : formulario})
とビューを使用していることを最終的にフォーム:
#forms.py
class FormularioContacto(forms.ModelForm):
class Meta:
model = Mensaje
fields = ('tit_msj', 'descripcion_msj', 'email',)
私はに最善のことを考えますモデルで拡張されたUserモデル( "Usuario")を認証に使用することはできますが、私はここで取り残されています。興味がある人々のために
、ここでエラーがエンジンのスローです:
Cannot assign "<SimpleLazyObject: <User: admin>>": "Mensaje.id_usr" must be a "Usuario" instance.
すべてのヘルプは、事前に感謝をいただければ幸いです。
ありがとう、私が必要としていただけで、私は何かがとても分かりにくいことに恥ずかしいと感じ、私はまだDjangoについてたくさん学ぶ必要があります。 –