gpt4 book ai didi

python - 保存空条目的表单集

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:14 26 4
gpt4 key购买 nike

所以,我正在尝试保存表单集,但很难找到最好的方法!

到目前为止,我在下面尝试的方法有效,但它一直保存一个空记录!

如果我删除它,下次填写表格并提交时它会再次添加。数据被正确保存(我检查了管理和数据库),但是空记录不断被添加,就像它自动一次生成一个条目......我想for 可能有问题,但从我在 Google 上查找的内容来看,我正在尝试的内容似乎与我试图遵循的示例没有太大区别。另外,有时它会出现重复 cpf 键的错误,尽管条目是唯一的,并且尽管存在错误,但仍保存到数据库中。

处理保存表单集的最佳方法是什么?我正在到处搜索,我已经阅读了 django formset 文档并尝试了不同的方法,但这是迄今为止唯一有效的方法!

我还有其他 4 个表单集,它们通过一对一与用户相关。

我使用的是普通表单,一切正常,然后我不得不更改为表单集并迷失了哈哈!

任何见解都值得赞赏!

编辑:我刚刚意识到它在保存到数据库时跳转了 2 个 id,例如 1 - 3 - 5...我想它确实是重复的,但只保存一个条目?

View .py

UserFormSet = formset_factory(UserForm)

if request.method == 'POST':
formset = UserFormSet(request.POST)

if formset.is_valid():
for form in formset:
if form.is_valid():
form.save()

表单.py

class UserForm(forms.ModelForm):

name = forms.CharField(
label="Nome completo",
required = True,
)
bdate = forms.CharField(
label="Data de nascimento",
required = True,
)
gender = forms.ChoiceField (
label="Sexo",
required = True,
choices = gender_choice,
)
cpf = forms.CharField(
label="CPF",
required=True,
max_length=14,
)
oab = forms.CharField(
label="OAB",
required=True,
)
phone = forms.CharField(
label="Telefone",
required=True,
)

email = forms.EmailField(
label="E-mail",
required=True,
widget = forms.TextInput()
)

class Meta:
model = User

模型.py

class User(models.Model):
name = models.CharField(max_length=100, verbose_name='Nome Completo')
bdate = models.CharField(max_length=10, verbose_name='Data de Nasc.')
gender = models.CharField(max_length=15, verbose_name='Sexo')
cpf = models.CharField(max_length=14, unique=True, verbose_name='CPF')
oab = models.CharField(max_length=15, unique=True, verbose_name='OAB')
phone = models.CharField(max_length=15, verbose_name='Celular')
email = models.EmailField(max_length=50, verbose_name='E-mail')

def __unicode__(self):
return self.name

class Meta:
verbose_name = u'Identificação'
verbose_name_plural = u'Identificação'

类(class).html

<form ...>

<h3>Dados de Identificação</h3>
{{ UserFormSet.management_form }}
{% for form in UserFormSet %}
<label>Nome completo:</label>
{{ form.name }}
<label>Data de nascimento:</label>
{{ form.bdate }}
<label>Sexo:</label>
{{ form.gender }}
<label>CPF:</label>
{{ form.cpf }}
<label>OAB:</label>
{{ form.oab }}
<label>Telefone:</label>
{{ form.phone }}
<label>E-mail:</label>
{{ form.email }}
{% endfor %}

</form>

最佳答案

尝试仅保存表单更改。

UserFormSet = formset_factory(UserForm)

if request.method == 'POST':
formset = UserFormSet(request.POST)

if formset.is_valid():
for form in formset:
if form.is_valid():
if form.has_changed():
form.save()

关于python - 保存空条目的表单集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com