Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django modelForm得到了一个意外的参数';首字母';_Django_Modelform_Django Errors - Fatal编程技术网

Django modelForm得到了一个意外的参数';首字母';

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)

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)
      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)