在我的表单中,我想用来自两个模型的数据填充ModelChoiceField。
如何更改包含两个不同模型的对象的查询集?
我的方法是将查询集打包在一个列表中。但这似乎不是数据的正确容器。
我认为您不能将ModelChoiceField与两个不同的模型一起使用,因为您不能拥有由两个不同的模型组成的查询集。
您最好尝试使用ChoiceField,该参数接受带有元组列表的choices参数。
假设您在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中的所有记录更新选择字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句