Проверьте, существует ли foreignKey

Мне нужен способ проверить, была ли запись, связанная с foreignKey, уже создана.

У меня есть 2 модели, project и fundamentals. Fundamentals имеет ForeignKey к проекту, так что все добавляемые основы связаны с этим проектом.

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)

В моем представлении я пытаюсь создать страницу на основе If уже существующей PK в fundamentals модели.

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

else: 
    return MyPage

Вы можете проверить, существует ли хотя бы один объект Fundamentals для данного project_id с помощью:

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

При проверке if fundamentals мы делаем запрос для извлечения всех связанных Fundamentals. Таким образом, вы можете использовать Fundamentals после предложения if, и это не вызовет нового SQL-запроса, если вы перечислите, например, более fundamentals.

Chack this....

view.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')

model.py

class Fundamentals(models.Model):
    project_name = models.ForeignKey(Project, to_field='project_name', on_delete=models.CASCADE,blank=True, related_name='project')
    #.....
Вернуться на верх