ModelForm领域的attrs

时间:2017-11-26 23:10:37

标签: django django-forms django-views

根据django docs,模型表单字段接受attrs。当我尝试申请attrs时,我得到了

  

TypeError: init ()得到了一个意外的关键字参数' attrs'

我试图制作的表格非常简单,我只想对其应用样式。我做错了什么?

forms.py

from django import forms

from .models import ServiceReportModel


class ServiceReportCreateForm(forms.ModelForm):
    class Meta:
        model = ServiceReportModel
        fields = [
            'request_number',
            'request_reason',
            'actions_taken',
        ]


class ServiceReportUpdateForm(forms.ModelForm):
    class Meta:
        model = ServiceReportModel
        fields = [
            'report_number',
            'request_number',
            'request_reason',
            'actions_taken',
        ]
        widgets = {
            'report_number': forms.CharField(attrs={'class': 'form-control'}),
            'request_number': forms.CharField(attrs={'class': 'form-control'}),
            'request_reason': forms.CharField(attrs={'class': 'form-control'}),
            'actions_taken': forms.Textarea(attrs={'class': 'form-control'}),
        }

views.py

from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy

from .forms import ServiceReportCreateForm, ServiceReportUpdateForm
from .models import ServiceReportModel


class ReportCreateView(CreateView):
    form_class = ServiceReportCreateForm
    model = ServiceReportModel


class ReportCreateView(UpdateView):
    form_class = ServiceReportUpdateForm
    model = ServiceReportModel


class ReportDeleteView(DeleteView):
    model = ServiceReportModel
    success_url = reverse_lazy('reports-list')

models.py

import uuid
from django.urls import reverse
from django.db import models
from django.forms import ModelForm
from main import models as main_models
from customers import models as customers_models


class ServiceReportModel(models.Model):
    report_number = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    request_number = models.ForeignKey(ServiceRequestModel,
                                       on_delete=models.PROTECT,
                                       null=True,
                                       related_name='s_report_number'
                                      )
    reported_by = models.ForeignKey(main_models.MyUser, editable=False, related_name='reports')
    reported_date = models.DateTimeField(auto_now_add=True)
    updated_by = models.ForeignKey(main_models.MyUser, editable=True, blank=True, null=True, related_name='+')
    updated_date = models.DateTimeField(auto_now=True)
    request_reason = models.CharField(max_length=255, null=True)
    actions_taken = models.TextField()

    def get_absolute_url(self):
        return reverse('service-report', kwargs={'pk': self.pk})

1 个答案:

答案 0 :(得分:2)

字段不接受attrs,小部件可以。类似地,widgets字典期望小部件不是字段。您应该使用TextInput