Я не думаю, что вы можете использовать ModelChoiceField с двумя разными моделями, потому что у вас не может быть набора запросов, состоящего из двух разных моделей.
Лучше попробуйте использовать ChoiceField, который принимает параметр выбора со списком кортежей.
Скажем, у вас есть две модели в models.py, как это:
from django.db import models
class Model1(models.Model):
name = models.CharField(max_length=20, primary_key=True)
description = models.CharField(max_length=200)
class Model2(models.Model):
name = models.CharField(max_length=20, primary_key=True)
description = models.CharField(max_length=200)
Вы можете создать форму, как это в forms.py:
from django import forms
from .models import Model1, Model2
class MultipleModelChoiceForm(forms.Form):
select = forms.ChoiceField(choices=[])
def __init__(self, *args, **kwargs):
super(MultipleModelChoiceForm, self).__init__(*args, **kwargs)
choices = []
for obj1 in Model1.objects.all():
choices.append((obj1.name, obj1.description))
for obj2 in Model2.objects.all():
choices.append((obj2.name, obj2.description))
self.fields['select'].choices = choices
Обратите внимание, что выбор определяется в __init__ формы, чтобы поле выбора было обновлено со всеми записями в Model1 и Model2 при создании экземпляра формы.
Это работает - вид. Если я добавлю еще один элемент в модель, выбор не будет обновляться, только когда я перезапущу сервер, новые поля будут заполнены в поле. –
См. Мое редактирование с кодом для обработки этого – baxeico