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

201
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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