2017-07-25 21 views
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

インスタンスの更新フォームに行くと、周波数領域で確認されている選択肢は、フィールドの残りの部分は何にもかかわらず、確認されたままにしないでください。私はこれが複数の選択を受け入れる唯一のフィールドであることを知っています。不思議なことに、私が作ったテーブルは周波数を配列として返します。私はこれが以前に尋ねられたことを知っていますが、それは答えを得ていないので、私は誰かがこのジレンマで私を助けることを望んでいます。ありがとう。

答えて

0

回答が見つかりました。モデルのフィールドをMultiSelectFieldに変更するはずです。

関連する問題