ForeignKey Не возвращает связанные данные, как ожидалось
У меня есть 2 модели Project
и Fundamentals
основы связаны через FK с Project
.
У меня есть представление, которое позволяет мне добавлять данные в таблицу fundamentals
, а также представление для обновления fundamentals
, когда данные уже существуют.
Но когда я пытаюсь получить данные, я передаю project_id
в запросе. Но, похоже, происходит следующее: если у меня 5 проектов и из проекта 5 я добавляю данные fundamentals
, то данные в таблице имеют ID 1
, так как это первая запись в таблице fundamentals
. но id моего проекта 5
, так как это 5-й проект
Если я перейду к проекту 1 и добавлю fundamentals
, он вернет данные из проекта 5.
Надеюсь, это имеет смысл?
Я предполагаю, что это способ, которым я запрашиваю данные в этих представлениях:
def fundamentals_view(request, project_id):
check_exist = Fundamentals.objects.filter(project_name_id=project_id)
if check_exist:
return update_fundamentals_view(request, project_id)
else:
return add_fundamentals_view(request, project_id)
@login_required
def add_fundamentals_view(request, project_id):
project = get_object_or_404(Project, pk=project_id)
if request.method == 'POST':
form = FundamentalsForm(request.POST)
if form.is_valid():
fundamental = form.save(commit=False)
fundamental.project_name = project
fundamental.save()
return redirect('dashboard.html')
else:
form = FundamentalsForm()
return render(request, 'pages/add_fundamentals.html', {'project': project, "form": form})
def update_fundamentals_view(request, project_id):
project = get_object_or_404(Fundamentals, pk=project_id)
form = FundamentalsForm(request.POST or None, instance=project)
if form.is_valid():
form.save()
return redirect('/')
return render(request, 'pages/update_fundamentals.html', {'project': project, "form": form})
Должен ли я посылать в запросе что-то другое, а не project_id
Модель
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)
def __str__(self):
return str(self.project_name)
class Fundamentals(models.Model):
Yes_No_Choices = [
('Yes', 'Yes'),
('No', 'No'),
('Unknown', 'Unknown')
]
Good_Bad_Choices = [
('Good', 'Good'),
('Bad', 'Bad'),
('Average', 'Average'),
('Unknown', 'Unknown')
]
project_name = models.ForeignKey(Project, on_delete=models.CASCADE)
project_roadmap = models.CharField(max_length=25, blank=True, choices=Yes_No_Choices)
project_tier_entry_level = models.CharField(max_length=25, blank=True, choices=Yes_No_Choices)
project_tier_entry_level_notes = models.CharField(max_length=25, blank=True)
def __str__(self):
return str(self.project_name