Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

470
Visualizações
Django: la restricción NOT NULL falló en stockinfo_note.stock_id: error ForeignKey

Propósito y Problema:

Quiero poner dos formularios en la misma plantilla y procesarlos en una sola vista. Puedo obtener la plantilla para mostrar los dos formularios pero no enviarlos (es decir, procesar el envío). Cuando envío me sale el siguiente error:

 Exception Value: NOT NULL constraint failed: stockinfo_note.stock_id

'stock' es ForeignKey. No puedo entender cómo obtener la función stock_new en Views.py para completar la ID de clave externa, que es lo que creo que debo hacer para superar el error anterior.

Modelos.py:

 class Stock(models.Model): ''' Model representing the stock info. ''' user = models.ForeignKey(User) ticker_code = models.CharField(max_length=10, null=True, blank=True) def __str__(self): return self.ticker_code class Note(models.Model): ''' Model representing the note. ''' user = models.ForeignKey(User) text_note = models.TextField() stock = models.ForeignKey(Stock) def __str__(self): return self.text_note

Formularios.py

 class StockForm(forms.ModelForm): class Meta: model = Stock fields = ('ticker_code',) class NoteForm(forms.ModelForm): class Meta: model = Note fields = ('text_note',)

Vistas.py

 def stocknoter(request): stock = Stock.objects.filter(user=request.user) note = Note.objects.filter(user=request.user) context_dict = {'stock':stock, 'note':note} return render(request, "stocknoter/stock.html", context_dict) def stock_new(request): if request.method == "POST": form1 = StockForm(request.POST) form2 = NoteForm(request.POST) if form1.is_valid() and form2.is_valid(): stock = form1.save(commit=False) stock.user = request.user stock.save() note = form2.save(commit=False) note.user = request.user ''' **THE PROBLEM IS AROUND HERE i think, how do i pass stock_id created by form1 so form2 saves it as the foreignkey?** ''' note.save() return redirect('stock') else: form1 = StockForm() form2 = NoteForm() return render(request, 'stocknoter/stock_edit.html', {'form1':form1, 'form2':form2})

Como se mencionó anteriormente, creo que el problema radica en esta última sección (lo siento, debo agregar que soy nuevo en Django). ¿Qué debo hacer para guardar la identificación de la clave externa?

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Bien solucionado el problema. En stock_new agregué: note.stock = stock

Así que views.py ahora se ve así:

 def stocknoter(request): stock = Stock.objects.filter(user=request.user) note = Note.objects.filter(user=request.user) context_dict = {'stock':stock, 'note':note} return render(request, "stocknoter/stock.html", context_dict) def stock_new(request): if request.method == "POST": form1 = StockForm(request.POST) form2 = NoteForm(request.POST) if form1.is_valid() and form2.is_valid(): stock = form1.save(commit=False) stock.user = request.user stock.save() note = form2.save(commit=False) note.user = request.user note.stock = stock note.save() return redirect('stock') else: form1 = StockForm() form2 = NoteForm() return render(request, 'stocknoter/stock_edit.html', {'form1':form1, 'form2':form2})
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda