Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

471
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda