Невозможно передать атрибуты формы в ModelForm в шаблон

Я пытаюсь установить ModelForm, но когда я не получаю attrs, которые я установил в моей форме в Template.
Также я хочу получить ввод даты в формате dd/mm/yyyy,
. Вот моя модель:

class Delivery(models.Model):
    user = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name=_("delivery_user"))
    full_name_reciever = models.CharField(_("Reciever Full Name"), max_length=50)
    pickup_address = models.ForeignKey(Address, on_delete=models.CASCADE, related_name=_("pickup_address"))
    destination_address = models.CharField(max_length=250)
    destination_city = models.ForeignKey(City, on_delete=models.CASCADE, related_name=_("delivery_city"))
    destination_post_code = models.CharField(max_length=20)
    operation_date = models.DateField(
        _("desired pickup date"), auto_now=False, auto_now_add=False, blank=False, null=False
    )
    boxes_number = models.PositiveIntegerField(_("Number of Boxes"), default=1)
    boxes_wight = models.PositiveIntegerField(_("Boxes Wight"), default=1)
    boxes_volume = models.PositiveIntegerField(_("Boxes Volume"), default=0)
    document = models.FileField(
        help_text=_("Delivery Documets"),
        verbose_name=_("Delivery Certificates"),
        upload_to="documents/deliveries_documents/",
    )
    invoice = models.BooleanField(_("check if you want an invoice"), default=False)
    created_at = models.DateTimeField(_("Created at"), auto_now_add=True, editable=False)
    updated_at = models.DateTimeField(_("Updated at"), auto_now=True)
    delivery_key = models.CharField(max_length=200)
    billing_status = models.BooleanField(default=False)
    delivery_status = models.BooleanField(default=False)

    class Meta:
        ordering = ("-created_at",)
        verbose_name = _("Delivery")
        verbose_name_plural = _("Deliveries")

    def __str__(self):
        return str(self.created_at)

Форма Модель:

class UserDeliveryForm(forms.ModelForm):
    class Meta:
        model = Delivery
        fields = [
            "full_name_reciever",
            "pickup_address",
            "destination_address",
            "destination_city",
            "destination_post_code",
            "operation_date",
            "boxes_number",
            "boxes_wight",
            "boxes_volume",
            "document",
            "invoice",
            "delivery_key",
            "billing_status",
            "delivery_status",
        ]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["full_name_reciever"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "full name reciever "}
        )
        self.fields["pickup_address"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "pickup address "}
        )
        self.fields["destination_address"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "destination address"}
        )
        self.fields["destination_city"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "destination city"}
        )
        self.fields["destination_post_code"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "Post Code"}
        )
        self.fields["operation_date"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "operation date"}
        )
        self.fields["boxes_number"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "boxes number"}
        )
        self.fields["boxes_wight"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "boxes wight"}
        )
        self.fields["boxes_volume"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "boxes volume"}
        )
        self.fields["document"].widget.attrs.update(
            {"multiple": True, "class": "form-control mb-2 delivery-form", "Placeholder": "document"}
        )
        self.fields["invoice"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "invoice"}
        )
        self.fields["delivery_key"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "delivery key"}
        )
        self.fields["billing_status"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "billing status"}
        )
        self.fields["delivery_status"].widget.attrs.update(
            {"class": "form-control mb-2 delivery-form", "Placeholder": "delivery status"}
        )

И мой взгляд:

class DeliveryCreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
    model = Delivery
    fields = [
        "full_name_reciever",
        "pickup_address",
        "destination_address",
        "destination_city",
        "destination_post_code",
        "operation_date",
        "boxes_number",
        "boxes_wight",
        "boxes_volume",
        "document",
        "invoice",
        "delivery_key",
        "billing_status",
        "delivery_status",
    ]
    template_name = "deliveries/customer/edit_deliveries.html"
    success_url = reverse_lazy("account:dashboard")

    def test_func(self):
        return self.request.user.is_customer and self.request.user.is_active

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist("decument")
        if form.is_valid():
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        form.instance.user_id = self.request.user.id
        return super().form_valid(form)

Я хочу получить в своем шаблоне пикет даты, используя формат даты dd/mm/yyyy, но когда я указываю тип ввода вручную на "дата" в шаблоне, я получаю формат mm/dd/yyyy с пикером даты.
Вот шаблон , который я использую:

Also even though I set the form to accept multiple file upload, I need to manually set that in my template. also the css class='form-control' that don't work from widgets setting in the form.
form display

Я устранил проблему, я понял, что я не назначил Mofelform контекстным данным Modelview.
. Это ModelView:

class DeliveryCreateView(LoginRequiredMixin, UserPassesTestMixin, CreateView):
    model = Delivery
    form_class = UserDeliveryForm
    template_name = "deliveries/customer/edit_deliveries.html"
    success_url = reverse_lazy("account:dashboard")

    def test_func(self):
        return self.request.user.is_customer and self.request.user.is_active

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist("decument")
        if form.is_valid():
            for f in files:
                f.save()
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

    def form_valid(self, form):
        form.instance.user_id = self.request.user.id
        return super().form_valid(form)

Вот результат, который я получаю:
form

вы можете использовать плавный код в классе ModelForm :

operation_date = forms.DateField(widget=forms.DateInput(
    attrs={"type": 'date', 'required': False, 'value': datetime.datetime.today().strftime('%Y-%d-%m')}), label=_("Date"))
Вернуться на верх