Django - Получение идентификатора до проверки достоверности формы
Я столкнулся с проблемой, когда у меня есть несколько форм на одной странице. Я пытаюсь обновить элемент с помощью формы обновления.
Проблема в том, что я не могу отобразить в шаблоне самые актуальные данные, которые находятся в БД.
Когда я запрашиваю пк, он приходит из другой модели, которая не связана с этой. Мне нужно получить ID, прежде чем убедиться, что форма действительна, чтобы я мог отфильтровать и получить нужный элемент на основе ID для отображения нужных мне данных.
models.py
class DevIssues(models.Model):
ISSUE_CODE = [
('BUG', 'Bug'),
('BACKLOG', 'Backlog'),
('REQUEST', 'Request'),
('TODO', 'To-Do'),
]
ISSUE_STATUS = [
('NEW', 'New'),
('WIP', 'In Progress'),
('Complete', 'Complete'),
]
project = models.ForeignKey(DevProjects, on_delete=models.CASCADE, related_name='issue')
issue = models.CharField(max_length=100)
issue_desc = models.CharField(max_length=500)
issue_code = models.CharField(max_length=9, choices=ISSUE_CODE, null=True, blank=True)
issue_status = models.CharField(max_length=15, choices=ISSUE_STATUS, default='New')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateField(auto_now=True)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
forms.py
class AddProjectIssues(forms.ModelForm):
class Meta:
model = DevIssues
fields= ["issue", "issue_desc", "issue_code"]
labels = {
'issue': 'Issue',
'issue_desc': 'Issue Description',
'issue_code': 'Issue Code',
}
class UpdateProjectIssues(forms.ModelForm):
class Meta:
model = DevIssues
fields= ["issue_status"]
views.py
issue_project = get_object_or_404(DevProjects, pk=pk)
issues = DevIssues.objects.filter(project=issue_project).order_by('-created_at')
if request.method == 'POST' and 'addissue' in request.POST:
issue_form = AddProjectIssues(request.POST or None)
if issue_form.is_valid():
content = request.POST.get('issue')
content2 = request.POST.get('issue_desc')
content3 = request.POST.get('issue_code')
issues = DevIssues.objects.create(issue=content, issue_desc=content2, issue_code=content3, project=project, created_by=request.user)
issues.save()
return redirect("/projects")
else:
issue_form = AddProjectIssues()
content1 = DevIssues.objects.filter(id= **here**).first() #here I need to get ID before so I can filter and get the correct data to be displayed.
if request.method == 'POST' and 'updateissue' in request.POST:
update_issue_form = UpdateProjectIssues(request.POST, instance=content1)
if update_issue_form.is_valid():
content = request.POST.get('issue_status')
content2 = request.POST.get('updateissue')
notes = DevIssues.objects.filter(id=content2).update(issue_status=content)
return redirect('/projects')
else:
update_issue_form = UpdateProjectIssues(instance=content1)
Опять же, PK, который я получаю через запрос DevProjects, так как эта форма Issue основана на DevProject.
Как я могу получить ID элемента, не запрашивая PK через URL, чтобы отфильтровать и получить правильные данные для отображения? Любая помощь будет принята с благодарностью.
Вам нужно получить урлы через Ajax, а не через Django URL dispatcher. Насколько я понимаю, у вас есть несколько форм, и после отправки первой формы вы хотите получить ее pk, по которому вы хотите заполнить вторую форму и сохранить первичный ключ в другой таблице модели. Пожалуйста, используйте axios для вызова урлов.
Вы можете ответить на это сообщение, чтобы передать что-либо.