表单已提交但未在数据库中保存值

问题描述 投票:0回答:1

当我提交此表单时,它没有保存它所需要的值并将其保存到数据库中,而是提交了表单但是当我检查管理页面时该值是无,提交了表单并将我重定向到主页,但是值当我检查我的管理员时,表格采用的是无:

型号:

class Column(models.Model):
     user = models.OneToOneField(User, on_delete= models.CASCADE)
     name = models.CharField(max_length=100)
     select_type = models.ForeignKey(Type, on_delete= models.CASCADE)

意见:

class CreateColumn(CreateView):
    model = Column
    template_name = 'column_create.html'
    form_class = ColumnForm
    success_url = 'home'
    
    def get_context_data(self, **kwargs):
        context = super(CreateColumn, self).get_context_data(**kwargs)
        context['formset'] = ColumnFormSet(queryset=Column.objects.none())
        return context

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(CreateColumn, self).form_valid(form)

形式:

class ColumnForm(forms.ModelForm):
    class Meta:
        model = Column
        fields = ['name', 'select_type']

ColumnFormSet = modelformset_factory(Column, fields=('name' 'select_type'), extra=30)

模板:

<form method='post'>
    {% csrf_token %}
{{ formset.management_form}}
   {% for form in formset %}
        {{form.as_p}}
   {% endfor %}
<button type='submit'>Save<button/>
<form/>
python django
1个回答
0
投票

将您的 form_vaild() 方法更新为

def form_valid(self, form):
    form.instance.user = self.request.user
    form.save()
    return super(CreateColumn, self).form_valid(form)

在你的表格中.py

class ColumnForm(forms.ModelForm):
    class Meta:
        model = Column
        fields = ['user', 'name', 'select_type']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['user'].required = False
© www.soinside.com 2019 - 2024. All rights reserved.