Hi All,
I am facing an issue, to pre-populate the Foreign Key on the web page.
Actually i have two models Projects and Modules.
To create a Module, one has to select the Project and go to Module page for create it, but there the Project is not populated.
Below are the details... Please guide me.
models.py
class Project(models.Model):
name = models.CharField(max_length = 200, null = True)
startdate = models.DateTimeField()
def __str__(self):
class Modules(models.Model):
project = models.ForeignKey(Project, null = True, on_delete = models.SET_NULL)
modulename = models.CharField(max_length = 200, null = True)
modulestartdate = models.DateTimeField()
def __str__(self):
return self.modulename
forms.py
class ProjectForm(forms.ModelForm):
class Meta:
model = Project
fields = '__all__'
class ModuleForm(forms.ModelForm):
class Meta:
model = Modules
fields = '__all__'
views.py
def projectView (request):
if request.method == 'POST':
form = ProjectForm(request.POST)
if form.is_valid():
form.save(commit=True)
return render(request, 'budget/projectForm.html', {'form': form})
else :
form = ProjectForm()
return render(request, 'budget/projectForm.html', {'form': form})
def modulesView (request, projectid):
project = Project.objects.get(pk=projectid)
if request.method == 'POST':
form = ModuleForm(request.POST)
if form.is_valid():
form.save(commit=True)
return render(request, 'example/modulesForm.html', {'form': form})
else :
form = ModuleForm(instance=project)
return render(request, 'example/modulesForm.html', {'form': form})
urls.py
path('testproject/', views.projectView, name='projectView'),
path('testprojectmodule/<str:projectid>/', views.modulesView, name='modulesView'),
in html forms for both Project and Modules... just using {{ form.as_table }}.
then my Project should get pre-populated... as reached using the project id which is 1 in this case, but i am getting full drop-down. Refer attached image.
Either the Project should be pre-selected.. or can make it non-editable either will work for me.
Please help.