我已经在这个问题上挣扎了一段时间,所以我感谢任何帮助,无论多么模糊。
Django 2.0.1:"必需"设置Django用于验证字段是否有效,如果我输入:
{{ client_primary_sector }}
使用" required"进入适用的html文件通过数据模型(blank=False
)或通过forms.py(attrs={"required": "required"}
)选择的设置。然而,"要求"当我使用for循环生成单选按钮时,设置失败。
请参阅下面的工作和破解示例。
models.py:
class SurveyInstance(models.Model):
client_primary_sector = models.CharField(choices=PRIMARY_SECTOR, null=True, default='no_selection', blank=False, max_length=100)
请注意上面的`default =' no_selection',它不在PRIMARY_SECTOR选项中,也不会作为用户的选项呈现。这会强制用户在保存数据之前进行选择(我已确认它有效)。
forms.py
class ClientProfileForm(ModelForm):
class Meta:
model = SurveyInstance
fields = ('client_primary_sector',)
widgets = {'client_primary_sector': forms.RadioSelect(choices=PRIMARY_SECTOR, attrs={"required": "required"}),
}
views.py
def client_profile_edit(request, pk):
# get the record details from the database using the primary key
survey_inst = get_object_or_404(SurveyInstance, pk=pk)
# if details submitted by user
if request.method == "POST":
# get information from the posted form
form = ClientProfileForm(request.POST, instance=survey_inst)
if form.is_valid():
survey_inst = form.save()
# redirect to Next view:
return redirect('questionnaire:business-process-management', pk=survey_inst.pk)
else:
# Retrieve existing data
form = ClientProfileForm(instance=survey_inst)
return render(request, 'questionnaire/client_profile.html', {'form': form})
client_profile.html
<!-- this works: -->
<!-- <div class="radio_3_cols">
{{ form.client_primary_sector }}
</div> -->
<!-- this doesn't: -->
{% for choice in form.client_primary_sector %}
<div class="radio radio-primary radio-inline">
{{ choice.tag }}
<label for='{{ form.client_primary_sector .auto_id }}_{{ forloop.counter0 }}'>{{ choice.choice_label }}</label>
</div>
{% endfor %}
您可能想知道我为什么不使用工作解决方案......我希望能够在其他情况下使用for循环逻辑,因此需要一个解决方案。
答案 0 :(得分:0)
回答了我自己的问题。从2.0的文档: https://docs.djangoproject.com/en/2.0/ref/forms/widgets/#radioselect
正确的语法是:
$request->file('photo')->move(public_path("/uploads"), $newfilename);
不是我之前发现的任何东西。确认工作。 Hoorah!