Я пытаюсь создать представление, которое проверяет, находится ли пользователь в модели менеджера или нет. Это проверяет пользователя, если они включены, поэтому они смогут опубликовать задачу. Я создал вид в другом к этому. однако метод test_fun c не работает. Когда я создаю новое задание, оно выдает ошибку Generic detail view createjob must be called with either an object pk or a slug in the URLconf.
. Я уже создал get_absolute_url в своей модели задания, чтобы вернуться к подробному виду. Кто-нибудь может мне помочь?
views.py:
class createjob (LoginRequiredMixin,UserPassesTestMixin,CreateView):
model = Job
fields = ['member','title', 'description', 'file']
def form_valid(self,form):
form.instance.manager=manager.objects.get(manager=self.request.user)
return super().form_valid(form)
def test_func(self):
return self.get_object().manager == self.request.user
urls.py:
urlpatterns = [
path ('new/', createjob.as_view(),name='create-job'),
path ('team/',teamview.as_view(), name='team-view'),
path('<int:pk>/',jobdetail.as_view(),name='job-detail'),
path ('created/',createdjobs.as_view(), name='create-job-manager'),
path ('',jobs.as_view(),name='view-jobs')
Models.py:
from django.db import models
from profiles.models import User
from django.urls import reverse
# Create your models here.
class Points (models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
points = models.IntegerField(default=0, null=False)
def __str__(self):
return self.user.username
class Profile (models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.png',upload_to='profile_pics')
def __str__(self):
return f'{self.user.username}Profile'
class Manager (models.Model):
name = models.CharField(max_length=30, blank=True, null=True)
manager = models.OneToOneField(User,on_delete=models.CASCADE)
def __str__(self):
return self.name
class Member (models.Model):
name = models.CharField(max_length=30, blank=True, null=True)
manager = models.ForeignKey(Manager, on_delete=models.CASCADE)
member = models.OneToOneField(User,on_delete=models.CASCADE)
def __str__(self):
return self.name
class Job (models.Model):
manager = models.ForeignKey(Manager, on_delete=models.CASCADE)
member = models.ForeignKey(Member, on_delete=models.CASCADE)
title = models.CharField(max_length=30, blank=False, null=False)
description = models.TextField()
datePosted = models.DateTimeField (auto_now = True)
file = models.FileField(null=True, blank=True,upload_to='job_files')
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('job-detail',kwargs={'pk':self.pk})
ТИА