根据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})
答案 0 :(得分:2)
字段不接受attrs
,小部件可以。类似地,widgets
字典期望小部件不是字段。您应该使用TextInput
。