I have a form to create projects in my app. In this form the user must select a client in a and then a farm in another . How do I when selecting a client, the next only offers options from farms that are from the selected customer? I believe it's impossible to do this with just Django, am I right?
simplified models.py
class Project(models.Model):
farm = models.ManyToManyField(Farm, related_name='farm_name',verbose_name='Propriedade beneficiada')
client = models.ForeignKey(Clients, on_delete=models.CASCADE, related_name='project_client',default=None,null=True, verbose_name='Cliente')
class Farm(models.Model):
client = models.ForeignKey(Clients, on_delete=models.CASCADE, related_name='client', null=True, default=None)
name = models.CharField(max_length=100, verbose_name='Nome')
forms.py
class NewProjectForm(ModelForm):
class Meta:
model = Project
fields = ['owner','farm','warranty','modal','harvest_year','culture','value','final_date']
def __init__(self, *args,**kwargs):
super(NewProjectForm, self).__init__(*args,**kwargs)
self.fields['value'].required = False
self.fields['final_date'].required = False
self.fields['owner'].queryset = Owner.objects.all().order_by('name')
farm_query = Farm.objects.all().order_by('name')
self.fields['farm'].queryset = farm_query
self.fields['warranty'].queryset = farm_query
self.fields['final_date'].widget.attrs['data-mask'] = "00/00/0000"
for field_name, field in self.fields.items():
field.widget.attrs['class'] = 'form-control'