【发布时间】:2022-10-24 02:09:05
【问题描述】:
我有以下型号
模型.py
class Activity(Model):
user = ForeignKey(settings.AUTH_USER_MODEL, on_delete=CASCADE)
activity = CharField(max_length=100, default='')
number = IntegerField(default=1)
和以下模型形式
表格.py
class ActivityForm(ModelForm):
class Meta:
model = Activity
fields = ['activity']
在视图中做成modelformset
视图.py
activities = Activity.objects.filter(user=request.user)
ActivityFormSet = modelformset_factory(Activity, form=ActivityForm)
formset = ActivityFormSet(queryset=activities)
if request.method == 'POST':
if 'save' in request.POST:
formset = ActivityFormSet(request.POST)
if formset.is_valid():
我的观点到此为止。因为表单集无效,并且 formset.errors 给了我:
[{'activity': ['This field is required.'], 'id': ['This field is required.']}, {}]
从我的模板:
<form enctype="multipart/form-data" method = "POST">
{% csrf_token %}
{{ formset.management_form }}
{% for hidden in formset.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for activity in activities %}
<div class="expandable-input-small" id="input_activity{{ activity.number }}" contenteditable="true"></div>
<div id="form_activity{{ activity.number }}">{% for hidden in formset.form.hidden_fields %}{{ hidden }}{% endfor %}{{ formset.form.activity.as_hidden }}</div>
{% endfor %}
<button name="save" class="btn btn-primary" type = "submit" value = "Click" onclick="get_data()">Save</button>
</form>
在使用函数 get_data() 提交之前,我使用 javascript 将数据从 contenteditable 传输到隐藏的表单集表单字段。我已经测试并确认该函数通过在表单外调用它并将输入字段设置为不隐藏来工作。
无论我做什么 - 即使我取消隐藏字段并手动输入数据,表单集似乎也不包含任何发布数据。我尝试使用文档来理解这一点 - 但大多数示例(出于某种原因)取自控制台命令,而不是在模板中显示表单集。
我究竟做错了什么?我该如何解决?
【问题讨论】:
标签: django django-models django-forms django-templates