Django modelForm得到了一个意外的参数';首字母';
modelForm得到一个意外的参数“initial”,我得到了这个错误。有人能解释一下怎么解决这个问题吗? 这是我的模特Django modelForm得到了一个意外的参数';首字母';,django,modelform,django-errors,Django,Modelform,Django Errors,modelForm得到一个意外的参数“initial”,我得到了这个错误。有人能解释一下怎么解决这个问题吗? 这是我的模特 class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, default=None) StudentID = models.CharField(max_length=8, blank=False, unique=True)
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, default=None)
StudentID = models.CharField(max_length=8, blank=False, unique=True)
Branch = models.CharField(max_length=255,choices=Departments,default="CSE")
def __str__(self):
return f'{self.user.username} Profile'
class complaintForm(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
category = models.CharField(max_length=255,choices=complaints,default='Mess')
title = models.CharField(max_length=20)
content = models.CharField(max_length=100)
image = models.ImageField(upload_to='complaint_pics/')
def __str__(self):
return self.title
form.py
class complaintForm(forms.ModelForm):
class Meta:
model = complaintForm
fields = ['title','content','image',]
views.py
class CreateComplaintView(CreateView):
model = complaintForm
form_class = complaintForm
template_name = 'user/post_complaint.html'
success_url = 'success'
您已将模型传递给
表单
属性。这就是为什么ComplaintForm
对于模型名称不是一个好主意。您最好将其重命名为投诉
,例如:
class Complaint(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
category = models.CharField(max_length=255,choices=complaints,default='Mess')
title = models.CharField(max_length=20)
content = models.CharField(max_length=100)
image = models.ImageField(upload_to='complaint_pics/')
def __str__(self):
return self.title
注意:正常情况下,Django模型就像Python中的所有类在PerlCase中都有一个名称,而不是snake\u case,因此它应该是:投诉
,而不是投诉
您将模型作为表单传递。这就是为什么
ComplaintForm
不是一个好主意。先生,谢谢你,但我还有另一个疑问。在views.py中,如何处理图像字段?form=ProfileUpdateForm(request.POST,request.FILES),在本例中,我们使用request.FILES,然后使用form.save()。我们如何在myviews.py中实现这一点?@BE18103089Gurpreetsigh:这已经由CreateView
处理了:它将使用request.POST
和request.FILES
构建一个表单,并保存表单。现在,当我尝试填充表单时,我收到一个错误“没有这样的列:用户投诉.user\u id”。我甚至没有将用户id包含在我的model@be18103089GurpreetSingh:这是因为您没有正确迁移数据库,或者因为您的投诉
模型没有用户
字段。类投诉(models.model):用户=模型。外键(Profile,on_delete=models.CASCADE)类别=模型.CharField(max_length=255,choices=complaints,default='Mess')title=models.CharField(max_length=255)content=models.TextField()image=models.ImageField(upload_to='complaintment_pics/',blank=True)def__str_(self):返回self.title
from app.models import Complaint
class ComplaintForm(forms.ModelForm):
class Meta:
model = Complaint
fields = ['title','content','image',]
from app.models import Complaint
from app.forms import ComplaintForm
class CreateComplaintView(CreateView):
model = Complaint
form_class = ComplaintForm
template_name = 'user/post_complaint.html'
success_url = 'success'
def form_valid(self, form):
form.instance.user = self.request.user.profile
super().form_valid(form)