Джанго: Как добавить флажок? - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь добавить флажок рядом с событиями в моем календаре.Я также хочу сохранить его как пользователь, оставив его (отмеченным / не отмеченным).

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})

class CalendarView(generic.ListView):
    model = Event
    template_name = 'cal/calendar.html'

    def get_queryset(self):
        qs = Event.objects.filter(user=self.request.user.id)
        return qs

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        d = get_date(self.request.GET.get('month', None))
        cal = Calendar(d.year, d.month)
        cal.user = self.request.user
        html_cal = cal.formatmonth(withyear=True)
        context['calendar'] = mark_safe(html_cal)
        context['prev_month'] = prev_month(d)
        context['next_month'] = next_month(d)
        return context

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()

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

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

Вот как выглядит мой календарь с добавленным событием

enter image description here

1 Ответ

0 голосов
/ 08 апреля 2019

Вам необходимо поле «многие ко многим» в модели события, например:

class Event(models.Model):
    ...
    attending = models.ManyToManyField('User', blank=True)

https://docs.djangoproject.com/en/2.2/topics/db/examples/many_to_many/

Вам необходимо добавить флажок: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox

Если пользователь установил флажок, вы можете отправить запрос на обновление базы данных.

Обновлять / сохранять в базе данных нужно только в том случае, если пользователь установил флажок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...