【问题标题】:Django: Checkbox choice displaying as True/False valueDjango:复选框选项显示为 True/False 值
【发布时间】:2019-04-11 19:31:24
【问题描述】:

我是 django 的初学者,我正试图让我的日历显示一个复选框本身而不是 True/False 值。但是,我可以从表单中获取要保存的数据

models.py

class Event(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    description = models.TextField(max_length=350)
    start_time = models.DateTimeField()
    #end_time = models.DateTimeField()

    event_checked = models.BooleanField()

    @property
    def get_html_url(self):
        url = reverse('cal:event_edit', args=(self.id, ))
        return f'<a href="{url}"> <label> {self.title} {self.event_checked}<label></a>'

    def __str__(self):
        return '{} - {} by {}'.format(self.title, self.description, self.user)

forms.py

class EventForm(forms.ModelForm):

 event_checked = forms.BooleanField()

  class Meta:
    model = Event
    # datetime-local is a HTML5 input type, format to make date time show on fields
    widgets = {
      'start_time': DateInput(attrs={'type': 'datetime-local'}, format='%Y-%m-%dT%H:%M'),
    }
    fields = ('title', 'description', 'start_time')

  def __init__(self, *args, **kwargs):
    super(EventForm, self).__init__(*args, **kwargs)
    # input_formats parses HTML5 datetime-local input to datetime field
    self.fields['start_time'].input_formats = ('%Y-%m-%dT%H:%M',)

views.py

def event(request, event_id=None):
    instance = Event()

    if event_id:
        instance = get_object_or_404(Event, pk=event_id)
    else:
        instance = Event()

    form = EventForm(request.POST or None, instance=instance)

    if request.POST and form.is_valid():
        event = Event.objects.create(**form.cleaned_data, user=request.user)
        print(event.title)
        return HttpResponseRedirect(reverse('cal:calendar'))
    return render(request, 'cal/event.html', {'form': form})

How my calendar looks with some events

【问题讨论】:

    标签: python django forms checkbox model


    【解决方案1】:

    我不知道这是否是你的目标:

    class EventForm(forms.ModelForm):
    
     event_checked = forms.BooleanField()
    
      class Meta:
        model = Event
        # datetime-local is a HTML5 input type, format to make date time show on fields
        widgets = {
          'event_checked' forms.CheckboxInput(), # <-- added this 
          'start_time': DateInput(attrs={'type': 'datetime-local'}, format='%Y-%m-%dT%H:%M'),
        }
        fields = ('title', 'description', 'start_time')
    
      def __init__(self, *args, **kwargs):
        super(EventForm, self).__init__(*args, **kwargs)
        # input_formats parses HTML5 datetime-local input to datetime field
        self.fields['start_time'].input_formats = ('%Y-%m-%dT%H:%M',)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2014-06-17
      • 1970-01-01
      • 2016-09-18
      • 2017-11-07
      • 1970-01-01
      相关资源
      最近更新 更多