我制作了这个网络应用https://notes12345.herokuapp.com
此应用的代码位于:https://github.com/theparadoxer02/Notes
想要的是以这样的方式制作搜索表单:当用户选择年份时,分支的选择是动态生成的,意味着只有分支选项应该来自选定年份,当选择分支选项时,那么主题的选项应该与选定的年份相关,上面的分支。 所以这样我想生成表单。
我应该学习什么?我应该在views.py或models.py中修改文件?我坚持不懈。
这是我的模型文件:
year_choices = (
( 1 , 'First' ),
( 2 , 'Second'),
( 3 , 'Third' ),
( 4 , 'Fourth')
)
branch_choices = (
( 'IT','IT' ),
( 'EE','EE' ),
( 'CSE','CSE'),
( 'EC','EC' ),
( 'ME','ME' ),
( 'CE','CE' ),
)
subject_choices = (
( 'DS' , 'Data Structure' ),
( 'OS' , 'Operating sytem' ),
( 'EC' , 'Ecomomics' ),
( 'Thermo' , 'Thermo' ),
)
def generate_picture_name(instance, filename):
url = "images/{0}_{1}_{2}.jpg".format(
instance.subjects.branch, instance.subjects.year, instance.unit_no)
return url
class Subject(models.Model):
name = models.CharField(max_length=20)
no_of_units = models.IntegerField()
year=models.IntegerField(choices=year_choices)
branch=models.CharField(choices=branch_choices,max_length=15)
def __str__(self):
return self.name
class Note(models.Model):
#unit_choices = ((1,'1'),(2,'2'),(3,'3'),(4,'4'),(5,'5'),(6,'6'),(7,'7'),(8,'8'),(9,'9'),(10,'10'))
#branch = models.CharField(max_length=55,choices=branch_choices)
#year = models.IntegerField(choices = year_choices)
#subject_name = models.CharField(choices=subject_choices,max_length=10)
subjects = models.ForeignKey(Subject,on_delete=models.CASCADE)
unit_no = models.IntegerField()
picture = models.ImageField(upload_to = generate_picture_name)
def __str__(self):
return str(self.id)
答案 0 :(得分:1)
您可以使用intercooler.js专门通过文档中提到的dependent Select功能轻松完成此操作。
答案 1 :(得分:0)
您有两种选择:
要么在服务器端做任何事情。
<form action="url_for_second_view">
或者在客户端使用javascript在年份变化时动态设置可用选项。