私はprogressBar
の自動投稿しようとしていますが、そのイベントのend_date
とbeggining_date
があり、20%完了のようなイベントの完了率が表示されますまたは40%が日付と日付との差分とプログレスバーの比率
AttributeError
'QuerySet' object has no attribute 'time_progress'
【選択のアイデアは
time_progress()
を呼び出すために、それが完了率を返しますです。
マイコード:
models.py
class Event(models.Model):
# other Fields above
beginning_date = models.DateTimeField("Beggining date")
end_date = models.DateField("Completion date")
def time_progress(self):
now = timezone.now()
progress = ((now - self.beginning_date).days/((self.end_date - now).days + (now - self.beginning_date).days))*100
return progress
views.py
class EventView(generic.DetailView):
model = Event
template_name = 'info/event.html'
def get_context_data(self, **kwargs):
context = super(EventView, self).get_context_data(**kwargs)
context['progress'] = Event.objects.filter(pk=self.kwargs.get('pk')).time_progress()
return context
event.html
<div class="progress">
<div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar"
aria-valuenow="{{ progress }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ progress }}%">{{ progress }}%</div>
</div>
'Event.objects.filter'はインスタンスではなくクエリーセットを返します。あなたが 'DetailView'を使用しているので、self.get_object()はオブジェクトを取得するのに適しています。それ以外の場合は、代わりに 'get_object_or_404'または' Event.objects.get() 'を使うことができます – Marat