2
モデルのフォームを作成しましたが、そのモデルの更新フォームを作成したいのですが、CheckboxSelectMultipleフィールドに問題があります。ここに私のコードは次のとおりです。チェックボックスをDjangoの編集フォームのCheckboxSelectMultipleフィールドに保存する方法
choices.py
FREQUENCY_CHOICES = (('sunday', 'Sunday'), ('monday', 'Monday'), ('tuesday', 'Tuesday'), ('wednesday', 'Wednesday'), ('thursday', 'Thursday'), ('friday', 'Friday'), ('saturday', 'Saturday'))
models.py
class Schedules(models.Model):
course_name = models.ForeignKey(Course)
location = models.CharField(max_length=128, choices=LOCATION_CHOICES, default='south_plainfield')
room = models.CharField(max_length=128, choices=ROOM_CHOICES, default='A')
start_date = models.DateField(auto_now=False, auto_now_add=False, default=datetime.date.today)
start_time = models.CharField(max_length=128, choices=START_TIME_CHOICES, default='eight-thirty am')
end_time = models.CharField(max_length=128, choices=END_TIME_CHOICES, default='eight-thirty am')
instructor = models.ForeignKey(Instructor)
total_hours = models.CharField(max_length=128, choices=TOTAL_HOURS_CHOICES, default='six')
# Relevant code here
frequency = models.CharField(max_length=128)
status = models.CharField(max_length=128, choices=STATUS_CHOICES)
interval = models.CharField(max_length=128, choices=INTERVAL_CHOICES, default='1 day')
initiated_by = models.CharField(max_length=128, null=True)
schedule_id = models.IntegerField(default=0)
forms.py
class ScheduleForm(forms.ModelForm):
course_name = CourseChoiceField(queryset=Course.objects.filter(status=True), label="Course Name", widget=forms.Select(attrs={'class': 'form-control'}))
location = forms.ChoiceField(choices=LOCATION_CHOICES, initial='south_plainfield', label="Location", widget=forms.Select(attrs={'class': 'form-control'}))
room = forms.ChoiceField(choices=ROOM_CHOICES, initial='A', label="Room", widget=forms.Select(attrs={'class': 'form-control'}))
start_date = forms.DateField(input_formats=['%m/%d/%Y'], label="Start Date", widget=DateInput(format='%m/%d/%Y'), help_text="MM/DD/YYYY")
start_time = forms.ChoiceField(choices=START_TIME_CHOICES, initial='eight-thirty am', label="Start Time", widget=forms.Select(attrs={'class': 'form-control'}))
interval = forms.ChoiceField(choices=INTERVAL_CHOICES, initial='1 day', label="Interval", widget=forms.Select(attrs={'class': 'form-control'}))
# hours_per_class = forms.ChoiceField(choices=HOURS_PER_CLASS_CHOICES, initial='four_and_half', label="Hours Per Class", widget=forms.Select(attrs={'class': 'form-control'}))
total_hours = forms.ChoiceField(choices=TOTAL_HOURS_CHOICES, initial='six', label="Total Hours", widget=forms.Select(attrs={'class': 'form-control'}))
instructor = InstructorChoiceField(queryset=Instructor.objects.all(), label="Instructor", widget=forms.Select(attrs={'class': 'form-control'}))
end_time = forms.ChoiceField(choices=END_TIME_CHOICES, initial='eight-thirty am', label="End Time", widget=forms.Select(attrs={'class': 'form-control'}))
# Relevant code here
frequency = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=FREQUENCY_CHOICES, label="Frequency", help_text="Please select at least one")
status = forms.ChoiceField(widget=forms.RadioSelect, choices=STATUS_CHOICES, label="Status")
class Meta:
model = Schedules
fields = ('course_name', 'instructor', 'location', 'room', 'start_date', 'start_time', 'end_time', 'interval', 'total_hours', 'frequency', 'status',)
views.py
def update_Schedule(request, pk):
schedule = get_object_or_404(Schedules, pk=pk)
form = ScheduleForm(request.POST or None, instance=schedule)
if form.is_valid():
form.save()
return redirect('schedule_list')
return render(request, "schedule/update_schedule.html", {'form':form})
何らかの理由で
{% block main_content %}
<style>
ul {
list-style: none;
}
</style>
<h2>Update Course Schedule</h2>
<br>
<form id="update_schedule_form" method="post" action="">
{% csrf_token %}
<div class="row">
{% for field in form %}
<div class="col-gl-4 col-md-4">
<div class="form-group">
<strong>{{ field.errors }}</strong>
{{ field.label_tag }}
{{ field.help_text }}
<br>
{{ field }}
<script></script>
</div>
</div>
{% endfor %}
</div>
<button type="submit" name="submit">Update Schedule</button>
</form>
{% endblock %}
update_schedule.html
インスタンスの更新フォームに行くと、周波数領域で確認されている選択肢は、フィールドの残りの部分は何にもかかわらず、確認されたままにしないでください。私はこれが複数の選択を受け入れる唯一のフィールドであることを知っています。不思議なことに、私が作ったテーブルは周波数を配列として返します。私はこれが以前に尋ねられたことを知っていますが、それは答えを得ていないので、私は誰かがこのジレンマで私を助けることを望んでいます。ありがとう。