Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

469
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!