Как сделать так, чтобы внешний ключ django-form указывал на модель, которая сейчас создается
Моя Models.py содержит 2 модели, каждая Project может иметь несколько Role (т.е. отношения один-ко-многим):
class Project(models.Model):
title = models.CharField(max_length=2000)
state_of_project = models.CharField(max_length=10, default='ongoing')
introduction = models.TextField(blank=True)
class Role(models.Model):
role_name = models.CharField(max_length=30)
project = models.ForeignKey(Project, on_delete=models.SET_NULL, null = True)
def __str__(self):
return self.role_name
И они имеют свои соответствующие формы в файле forms.py, которые доступны в двух разных html файлах:
class ProjectForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProjectForm, self).__init__(*args, **kwargs)
class Meta:
model = Project
fields = ['title', 'state_of_project', 'introduction']
class RoleForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(RoleForm, self).__init__(*args, **kwargs)
project = forms.ModelChoiceField(queryset=Status.objects.all())
class Meta:
model = Role
fields = ['role_name', 'project']
При заполнении ProjectForm с html страницы, я хотел сделать возможность перехода по другой ссылке, которая позволяет заполнить RoleForm для нее на другой вкладке. Но роль, которую вы там добавляете, должна быть связана только с текущим проектом (т.е. внешний ключ этой роли должен указывать на проект, который сейчас создается пользователем, но еще не находится в базе данных).
Но в моей текущей реализации через django-form, пользователь может просто выбрать любой прошлый проект для новой роли, вместо того, чтобы иметь возможность выбрать только проект, который в настоящее время создается/редактируется.
Есть ли какое-либо решение этой проблемы. И если ни один внешний ключ не может указывать на создаваемую запись в базе данных, есть ли альтернативные способы добавления записи в эту базу данных через форму?