我遇到了错误: 找不到带有关键字参数'{'pk':''}'的'grievant_complaint_list'。尝试了1个模式:['grievant_complaint_list /(?P [0-9] +)/ $']
我正在尝试根据登录的用户提供特定用户发布的投诉列表,但是在提供主键方面存在问题。 附言我是django的新人
views.py
public static Integer removesecond(ArrayDequeue<Integer> queue){
Integer toReturn;
Integer[] arr = queue.toArray(new Integer[0]);
List<Integer> list = Arrays.asList(arr);
toReturn = list.remove(list.size() - 2);
queue.clear();
queue.addAll(list);
return toReturn;
}
models.py
@method_decorator([login_required, grievant_required], name='dispatch')
class GrievantComplaintListView(ListView):
login_url = '/login/'
model = Complaint
def get_queryset(self):
grievant = Grievant.objects.get(student=self.request.user)
return Complaint.objects.filter(grievant=grievant)
@method_decorator([login_required, grievant_required], name='dispatch')
class CreateComplaintView(CreateView):
login_url = '/login/'
redirect_field_name = 'complaint_detail.html'
form_class = ComplaintForm
model = Complaint
def set_grievant(self):
form.save(commit=False)
person = Grievant.objects.get(Registeration=self.request.user)
Complaint.grievant = person
form.save()
class ComplaintDetailView(LoginRequiredMixin,DetailView):
login_url = '/login/'
model = Complaint
@method_decorator([login_required, grievant_required],name='dispatch')
class StudentView(TemplateView):
template_name = 'student_view.html'
forms.py
class Grievant(models.Model):
student = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
Registeration = models.IntegerField(default=0000)
Room = models.CharField(max_length=50)
Hostel = models.CharField(max_length=100)
def __str__(self):
return self.Registeration`
class Complaint(models.Model):
grievant = models.ForeignKey('grievance_app.Grievant',on_delete=models.CASCADE,related_name='complaintee',primary_key=True)
department = models.ForeignKey('grievance_app.Department',on_delete=models.CASCADE)
text = models.TextField()
heading = models.CharField(max_length=200,blank=False,null=False,default='Problem')
media = models.ImageField(upload_to='media')
created_date = models.DateTimeField(default=timezone.now())
status_choices = [('D','Done'),('P','Pending'),('N','Not Accepted')]
status = models.CharField(choices=status_choices,max_length=1,default='N')
class Meta():
verbose_name_plural = 'Complaints'
def change_status(self,choice):
self.status = choice
self.save()
def __str__(self):
return self.heading
def get_absolute_url(self):
return reverse("complaint_detail",kwargs={'pk':self.pk})
urls.py
class ComplaintForm(forms.ModelForm):
class Meta():
model = Complaint
fields = ('department','heading','text','media')
student_view.html
path('student_view/',views.StudentView.as_view(),name='student_view'),
path('grievant_complaint_list/<int:pk>/',views.GrievantComplaintListView.as_view(),name='grievant_complaint_list'),
path('complaint/new/',views.CreateComplaintView.as_view(),name='create_complaint'),
path('complaint_detail/<int:pk>/',views.ComplaintDetailView.as_view(),name='complaint_detail')