У меня есть две модели django ModelA и ModelB.
class ModelA(models.Model):
fieldA1 = models.CharField()
fieldA2 = models.CharField()
fieldA3 = models.ManyToManyField('ModelC')
class ModelB(models.Model):
key = models.CharField()
value = models.CharField()
и форма django:
class MyForm(forms.ModelForm):
A_fields =[field.name for field in ModelA._meta.get_fields()]
key= forms.ChoiceField(label='Key',choices = [(str(l),str(l)) for l in A_fields])
value= forms.MultipleChoiceField(label='Value',choices = 'Need Help here').
'I have used MultipleChoiceField because if key == fieldA3 then there could be multiple choices for this field.'
class Meta:
model = ModelB
fields = ('key', 'value')
Поскольку варианты выбора поля 'key' являются именами полей ModelA.Я хочу, чтобы, основываясь на выбранном ключе (который будет некоторым именем поля ModelA), варианты выбора, показанные для поля 'value' в MyForm, должны быть всеми значениями, хранящимися в этом конкретном поле ModelA.
Я знаюКак получить значения, хранящиеся в определенном поле ModelA. Мне нужно использовать следующую команду:
field_values = ModelA.objects.values('Field for which i want values')
Это представление:
def MyPageView(request):
if request.method == 'POST':
form1 = MyForm(request.POST)
if form1.is_valid():
myform = form1.save(commit=False)
return HttpResponseRedirect('/new_page')
else:
return render(request,'app1/my_page.html',{'form1':form1})
Вот my_page.html
<form method= "post">
{% csrf_token %}
{{ form1.as_p }}
<input type="submit" name="Save">
</form>
Как мне подойти к этой проблеме?Заранее спасибо.