1、使用ModelFormSet,一般都要设定default数,方法如下
class Memo(models.Model): title = models.CharField('タイトル', max_length=20) text = models.TextField('内容')
class MemoForm(ModelForm): class Meta: model = Memo fields = ('title', 'text')
from django.forms import ModelForm, BaseModelFormSet, modelformset_factory from apps.memo.models import Memo class BaseMemoFormSet(BaseModelFormSet): def __init__(self, *args, **kwargs): # MemoView传参 title = kwargs.pop('title') super().__init__(*args, **kwargs) # 初期値设定 self.queryset = Memo.objects.filter(title__startswith=title) MemoFormSet = modelformset_factory(Memo, Form=MemoForm, formset=BaseMemoFormSet)
view中,使用modelFormSet时候,传递title参数
class MemoView(TemplateView): model = Memo template_name = "memo/template.html" def get_context_data(self, *args, **kwargs, request) context = super().get_context_data(self, *args, **kwargs, request) # 向MemoFormSet传递title参数 context['formset'] = MemoFormSet('title'='test') return context