【发布时间】:2021-11-16 06:17:24
【问题描述】:
我正在使用 Django 的 ModelForm,但我的表单无缘无故没有保存多项选择字段的值。这是我的models.py:
class CaptureVersion(models.Model):
id_capture = models.AutoField(primary_key=True)
name = models.CharField(unique=True, max_length=50, verbose_name="Nom Disseny")
int_reference_number = models.CharField(max_length=15, unique=True, blank=True, null=True, verbose_name='IRN')
capture_version_id_provider = models.ForeignKey(Provider, on_delete=models.CASCADE, db_column='id_provider', verbose_name='Proveïdor')
associated_register = models.CharField(max_length=150, blank=True, null=True, verbose_name='Registre associat')
start_date = models.DateField(blank=True, null=True, verbose_name='Data Alta')
end_date = models.DateField(blank=True, null=True, verbose_name='Data Baixa')
target_size = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, verbose_name='Regions diana (Mb)')
probe_size = models.DecimalField(max_digits=6, decimal_places=2, blank=True, null=True, verbose_name='Sondes (Mb)')
sections = models.ManyToManyField(Section, blank=True, verbose_name="Secció")
responsibles = models.ManyToManyField(Responsible, blank=True, verbose_name="Responsable/s")
class Meta:
ordering = ['start_date']
db_table = 'capture_version'
还有我的forms.py:
class FormulariCaptura(ModelForm):
class Meta:
model = CaptureVersion
fields = ("name", "int_reference_number", "capture_version_id_provider", "associated_register", "start_date",
"end_date", "target_size", "probe_size", "sections", "responsibles",)
问题是字段sections 和responsibles 是外键。当我在表单中选择下拉列表的值之一时,没有问题,并且条目保存时没有明显错误,但表中该字段的值为-。但如果我在管理员中执行此操作,或者我使用 UpdateView 编辑条目,它会起作用。
这昨天有效,我没有改变任何东西......
我的views.py:
def capture_form(request):
formulari_captura=FormulariCaptura()
if request.method=="POST":
formulari_captura=FormulariCaptura(request.POST or None)
if formulari_captura.is_valid():
feedback = formulari_captura.save(commit=False)
capture = CaptureVersion.objects.all()
feedback.capture = capture
feedback.save()
messages.success(request, 'Kit de captura enregistrat correctament!')
return render(request, "captureVersion/formulari_captura.html", {'formulari':formulari_captura})
我的form.html:
<div class="formMostra">
{% if messages %}
{% for message in messages %}
<p style="margin: 20px;" {% if message.tags %} class=" {{ message.tags }} " {% endif %}> {{ message }} </p>
{% endfor %}
{% endif %}
<form action="" method="POST" style="text-align: justify;">
{% csrf_token %}
<table style="margin: 20px;">{{formulari.as_table}}</table>
<input type="submit" value="Afegir" style="width: 100px; margin: 20px; margin-right: 0px;" class="btn btn-primary">
<input onclick="location.href='/sample/'" value="Cancel·lar" style="width: 100px; margin: 20px; margin-left: 0px;" class="btn btn-light">
</form>
【问题讨论】:
-
我不确定,
feedback.capture = capture是干什么用的?CaptureVersion没有capture字段
标签: django django-forms