ManyToMany Field的Django动态表格选择

时间:2011-08-27 02:41:37

标签: django django-models django-forms

我正在尝试构建一个显示动态选择的表单

我如何建立一个表格,其中运动员的运动是一个选择区域,其中包含与运动员参加的赛事相关的运动......

我的模型如下......

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)

1 个答案:

答案 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时执行此操作,则可以eventajax request生成所选事件的sport_choices并返回它作为对ajax请求的响应。

相关问题