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