我正在尝试构建一个显示动态选择的表单
我如何建立一个表格,其中运动员的运动是一个选择区域,其中包含与运动员参加的赛事相关的运动......
我的模型如下......
class Sport(models.Model):
Type = models.CharField(max_length=15)
class EventCode(models.Model):
Description = models.CharField(max_length=95)
Sports = models.ManyToManyField(Sport)
class Athlete(models.Model):
Event = models.ForeignKey(EventCode)
Sport = models.ForeignKey(Sport)
答案 0 :(得分:4)
我假设您在构建表单时知道事件代码
这是您对EventCode
:
sport_choices = EventCode.objects.filter(pk=event).values_list('Sports','Sports__Type')
让我们说事件是跳跃然后你会得到[(5,'跳远'),(7,'青蛙跳')....]
现在你设置相关选择的方式是
Class AthleteForm(ModelForm):
class Meta:
model = Athlete
def __init__(self,*args, **kwargs):
super(AthleteForm, self).__init__(*args, **kwargs)
event = kwargs['event']
self.fields['Event'].initial = event
self.fields['Sport'].choices = EventCode.objects.filter(pk=event).values_list('Sports','Sports__Type')
如果您想在表单中选择event
时执行此操作,则可以event
为ajax request
生成所选事件的sport_choices
并返回它作为对ajax请求的响应。