首页 > 解决方案 > 表单中没有邮件默认值

问题描述

我正在使用一个表单 django,我想要已经在我的模型中定义的值。但是邮件的默认值没有显示在表单中。为什么?

表格.py

class ForeningForm(ModelForm):

    class Meta:
        model = Forening
        exclude = ['ordf','kass','adress']
        fields=['fname','fphone','mail','homepage','direktansk','anslutenannat',\
                'anteckningar','uppdaterad']

模型.py:

class Forening(Model):
    
    fname=CharField(default='missing',max_length=100)
    ordf=OneToOneField(Person,on_delete=CASCADE,related_name='ordf')
    kass=OneToOneField(Person,on_delete=CASCADE,related_name='ka')
    fphone=PhoneField(default='9999999999')
    adress=OneToOneField(Adress,on_delete=CASCADE,related_name='ad')
    mail=EmailField(default='missing@gmail.com')
    homepage=TextField(max_length=400,default='www.homepage.com')
    direktansk=BooleanField(default=False)
    anslutenannat=BooleanField(default=False)
    anteckningar=TextField(max_length=500,default='missing')
    uppdaterad=DateTimeField(default=timezone.now)

    def __str__(self):
        return 'förening: ' + self.fname

    class Meta:
        ordering=('fname','ordf')

视图.py:

class Fcreate(CreateView):

    form_class=ForeningForm
    template_name='kammem/create.html'

    def form_valid(self,form)

        fname=form.cleaned_data['fname']
        venue=form.cleaned_data['venue']
        fphone=form.cleaned_data['fphone']
        mail=form.cleaned_data['mail']
        homepage=form.cleaned_data['homepage']
        direktansk=form.cleaned_data['direktansk']
        anslutenannat=form.cleaned_data['anslutenannat']
        antekningar=form.cleaned_data['antekningar']
        uppdaterad=form.cleaned_data['uppdaterad']

标签: pythondjangoforms

解决方案


不显示默认值,因为模型不需要字段值(因为它具有默认值,即使用户没有填写此字段也不会设置为空白)。对于您的问题,最简单的解决方案可能是使用添加到表单实例化调用的字段的初始值来覆盖get_form方法:

class Fcreate(CreateView):

form_class=ForeningForm
template_name='kammem/create.html'

...

    def get_form(self, form_class=None):
        if form_class is None:
            form_class = self.get_form_class()
        form_kwargs = self.get_form_kwargs()
        form_kwargs.update(
            {'initial' : {'email': 'missing@gmail.com'}}
        )
        form = form_class(**form_kwargs)
        return form

推荐阅读