I am trying to implement chained dropdown list using Django smart_selects. But its not working as expected. After selecting the first dropdown, the second dropdown is not populating.
model.py:
class ServerInfo(models.Model):
server = models.CharField(max_length=255, verbose_name='Server')
def __str__(self):
return self.server
class Database(models.Model):
database = models.CharField(max_length=255, verbose_name='Database')
server = models.ForeignKey(ServerInfo,related_name='database', on_delete=models.CASCADE)
def __str__(self):
return self.database
class Tables(models.Model):
table = models.CharField(max_length=255, verbose_name='Table')
database = models.ForeignKey(Database,related_name='table', on_delete=models.CASCADE)
def __str__(self):
return self.table
class TransferJob(models.Model):
source_server = models.ForeignKey(ServerInfo, related_name='source_server', verbose_name='Source Server', on_delete=models.CASCADE)
source_db = ChainedForeignKey(
Database,
chained_field="source_server",
chained_model_field="server",
show_all=False,
auto_choose=True,
sort=True)
source_table = models.ForeignKey(Tables, related_name='source_table',on_delete=models.CASCADE, verbose_name='Source Table')
dest_server = models.ForeignKey(ServerInfo, related_name='destination_server', verbose_name='Destination Server', on_delete=models.CASCADE)
dest_db = models.ForeignKey(Database, related_name='destination_database', verbose_name='Destination Database', on_delete=models.CASCADE)
Update: I just realised that this is working as expected in the django admin. But how do I use this outside the admin?
Was able to solve this by adding these scripts in template:
<script type="text/javascript" src="{% static '/smart-selects/admin/js/chainedfk.js' %}"></script>
<script type="text/javascript" src="{% static '/smart-selects/admin/js/bindfields.js' %}"></script>
There was no mention about these in docs.