Django - получать данные из формы и возвращать пользователю, чтобы он мог редактировать/удалять их

Новичок в Django и делаю систему бронирования ресторанов. У меня все идет в базу данных, но теперь я пытаюсь вернуть информацию обратно пользователю, в идеале в виде формы, похожей на ту, что у меня есть, чтобы он мог редактировать или удалить бронирование.

Мой код на данный момент выглядит следующим образом:

models.py:

class Reservations(models.Model):

    reservation form categories and attributes
    name = models.CharField(max_length=50)
    phone_number = models.CharField(validators=[phoneNumberRegex], max_length=16, 
unique=True)
    email = models.EmailField()
    date = models.DateField()
    time = models.CharField(choices=time_options, default="12pm", max_length=10)
    number_of_party = models.IntegerField(choices=party_size, default=1)
    reservation_id = models.UUIDField(primary_key=True, default=uuid.uuid4, 
editable=False, max_length=15)


    class Meta:
        ordering = ['date']
        verbose_name = 'Reservation'
        verbose_name_plural = 'Reservations'

    def __str__(self):
        return self.name

Тогда моя форма выглядит следующим образом:

form.py:

class ReservationForm(forms.ModelForm):
    class Meta:
        model = Reservations
        fields = ['name', 'phone_number', 'email', 'date', 'time', 'number_of_party']
        widgets = {
            'date': DatePickerInput(format='%d-%m-%Y'),
        }

Тогда я думаю, где я действительно теряюсь, так это во взглядах.

view.py:

class ReservationsFormView(CreateView):
    model = Reservations
    template_name = "reservations/reservations.html"
    form_class = ReservationForm
    success_url = "reservation_complete/"



    def form_valid(self, form):
        return super().form_valid(form)


class EditReservationView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
    model = Reservations
    template_name = "reservations/edit_reservations.html"
    form_class = ReservationForm
    success_url = "reservation_complete/"

    def test_func(self):
        return self.request.user == self.get_object().user


class ReservationCompleteView(CreateView):
    template_name = "reservations/reservation_complete.html"
    success_url = "/reservation_complete/"
    form_class = ReservationForm
    model = Reservations


class ReservationAccountView(TemplateView):
    template_name = "reservations/reservations_account.html"

class DeleteReservationView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
    """ A view to delete an reservation """
    model = Reservations
    success_url = "/reservations/"

    def test_func(self):
        return self.request.user == self.get_object().user

По сути, если кто-то может помочь мне извлечь данные и представить их пользователю в html-файле, я буду очень признателен. Многие материалы в интернете не используют представления на основе классов, но я начинаю с этого, так что продолжаю в том же духе. Извините за многословный код. Заранее спасибо

Хотя Django's Edit, Create и т.д. представления быстры и полезны, я нахожу их трудными для манипулирования, особенно если я не использовал их некоторое время. Я рекомендую привыкать к написанию собственных представлений, так вы сможете задать любое действие, которое вы хотите, чтобы выполняло представление.

Допустим, ваш URL выглядит следующим образом - edit/4281ee81-a12a-4a0f-8928-2d9639903bd7/

forms.py

class EditReservationForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()

views.py

class EditReservationView(LoginRequiredMixing, View):
    def get(self, request, *args **kwargs):
        reservation = Reservations.objects.get(uuid=kwargs['uuid'])
        form = EditReservationForm(initial={"name": reservation.name, "email": reservation.email})
        return render(request, "reservation/edit-reservation.html", {"form": form})

Теперь у вас есть привязанная форма к данным конкретного бронирования. Надеюсь, это поможет. А больше информации об исходных данных здесь - инициальные значения формы

Вернуться на верх