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

200
Views
Comprobar si existe ForeignKey

Necesito una forma de comprobar si el registro vinculado a la clave extranjera ya se ha creado.

Tengo 2 modelos, project y fundamentals . Fundamentals tiene una ForeignKey para el proyecto, de modo que los fundamentos que se agregan están vinculados a ese proyecto.

 class Project(models.Model): project_name = models.CharField(max_length=50, blank=False, unique=True) project_website = models.URLField(max_length=50, blank=True) project_description = models.TextField(blank=True) ckeditor_classic = models.TextField(blank=True) project_category = models.CharField(max_length=15, blank=True) def __str__(self): return str(self.project_name)
 class Fundamentals(models.Model): project_name = models.ForeignKey(Project, to_field='project_name', on_delete=models.CASCADE) project_roadmap = models.CharField(max_length=25, blank=True) project_tier_entry_level = models.CharField(max_length=25, blank=True) project_tier_entry_level_notes = models.CharField(max_length=25, blank=True) project_rebranded = models.CharField(max_length=25, blank=True) def __str__(self): return str(self.project_name)

Entonces, en mi opinión, estoy tratando de representar una página basada en If el PK ya existe en el modelo de fundamentals .

 pk = Fundamentals.objects.filter(pk=project_id) if pk: return MyPage else: return MyPage

Actualizar:

 @login_required def Add_or_updateFundamentals(request,project_id): project = Project.objects.filter(pk=project_id) check_exist = Fundamentals.objects.filter(project_name_id=project_id) if request.method == 'POST': if check_exist: form = AddFundamentalsForm(request.POST,instance=project[0]) else: form = AddFundamentalsForm(request.POST) if form.is_valid(): if not check_exist: form.instance.project = project form.save() return redirect('dashboard.html') else: if check_exist: form = AddFundamentalsForm(instance=project[0]) return render(request, 'pages/update_fundamentals.html', {'project': project, "form": form}) else: form = AddFundamentalsForm() return render(request, 'pages/add_fundamentals.html', {'project': project, "form": form})
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede verificar si existe al menos un objeto de Fundamentals para el project_id dado con:

 fundamentals = Fundamentals.objects.filter( project_name_id=project_id ) if fundamentals: return MyPage else: return MyPage

Al verificar if fundamentals hacemos una consulta para recuperar todos los Fundamentals relacionados. Por lo tanto, puede usar Fundamentals después de la cláusula if y no realizará una nueva consulta SQL si enumera, por ejemplo, over fundamentals .

over 4 years ago · Santiago Trujillo Report

0

Mira esto....

ver.py

 def Funcation_name(request, pk): project= get_object_or_404(project, pk=pk) if fundamentals.exists(): messages.error(request, "Sorry can't be deleted.") return redirect('project:view_project') # also tried # if project in get_user_model().objects.filter(fundamentals__project=project).exists(): elif request.method == 'POST' and 'delete_single' in request.POST: project.delete() messages.success(request, '{} deleted.'.format(project.name)) return redirect('project:view_project')

modelo.py

 class Fundamentals(models.Model): project_name = models.ForeignKey(Project, to_field='project_name', on_delete=models.CASCADE,blank=True, related_name='project') #.....
over 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!