0

我目前有看起来像这样的模型

class Lg(models.Model):
    name = models.CharField(max_length = 50,choices = LG_CHOICES,unique = True)

class State(models.Model):
    name = models.CharField(max_length = 50,choices = STATE_CHOICES,unique = True)
    lg = models.ManyToManyField(Lg,related_name ='State_Lg',blank= True,null = True)

class AddPlaceForm(forms.Form):
    house_number = forms.IntegerField()
    street_name = forms.CharField()
    area = forms.CharField()
    city  = forms.CharField()
    lg = forms.ChoiceField(choices = Lg.objects.none()) 

    def __init__(self,state_id,*args,**kwargs):
        super(GenericPropertyForm,self).__init__(self,*args,**kwargs)
        self.fields['lg'] = forms.ChoiceField(choices=list(State.objects.get(id = state_id).lg.select_related()))

我希望用户像这样从视图中传递状态IDform = AddPlaceForm(state_id)

有人可以帮忙吗

4

1 回答 1

0

在您的视图代码中:

form = AddPlaceForm(state_id=state_id}

形式

def __init__(self, *args, **kwargs):
     state_id = kwargs.pop('state_id', None)
     super(AddPlaceForm, self).__init__(*args, **kwargs)
     self.fields['lg'] = forms.ChoiceField(choices = ((lg.id, lg.name) for lg in State.lg.filter(id=state_id))
于 2012-10-28T17:05:56.293 回答