我正在尝试获取由公司用户创建的工作对象。到目前为止,我尝试过的方法仅返回空查询集。
如何按用户/公司过滤作业对象?当我将get_success_url方法添加到创建视图时,它停止工作。我一直在盘旋,当我使细节视图工作时,创建视图停止工作,然后当我修复创建视图时,MyList视图停止工作。
我正在使用的当前视图:
class MyJobs(ListView):
model = Job
template_name = 'jobs/my_job_list.html'
context_object_name = 'myjobs'
def get_queryset(self):
jobs = Job.objects.filter(company_name__owner=self.request.user)
return jobs,print(jobs)
其他视图:
class JobDetailView(DetailView):
model = Job
context_object_name = 'job'
template_name = 'jobs/job_detail.html'
queryset = Job.objects.all()
def get_object(self,queryset=None):
obj = super().get_object()
obj.save()
return obj
def success_url(self):
return reverse('jobs:job_details',kwargs={'pk': self.object.pk})
def get_context_data(self,**kwargs):
context = super(JobDetailView,self).get_context_data(**kwargs)
context['job_dockets'] = JobDocket.objects.all()
return context
class JobCreateView(LoginRequiredMixin,CreateView):
model = Job
form_class = JobForm
template_name = 'jobs/job_create.html'
def get_success_url(self):
return reverse('jobs:job_details',kwargs={'pk': self.object.pk})
网址:
path('myjobs/',MyJobs.as_view(),name='my_jobs'),
工作模式:
class Job(models.Model):
JOB_TYPE = (
('1','Service'),('2','Repair'),('3','Quotation'),('4','Consultation'),('5','Report'),('6','Design'),)
accOUNT_TYPE = (
('1','Existing Customer'),'Charge to account'),'New Customer'),'Pre-Paid/C.O.D'),'Issued and acc App'),)
company_name = models.ForeignKey(Company,related_name='jobs',verbose_name="Company Name",on_delete=models.CASCADE)
job_reference = models.CharField(max_length=50,blank=False)
contact_person = models.CharField(max_length=50)
contact_number = models.IntegerField()
contact_person_email = models.EmailField(max_length=100,blank=True,null=True)
site_address = models.CharField(max_length=100)
job_type = models.CharField(choices=JOB_TYPE,max_length=50,default='1')
account_type = models.CharField(choices=accOUNT_TYPE,default='1')
job_details = models.CharField(max_length=1000)
created = models.DateTimeField(default=now,blank=True)
def __str__(self):
return str(self.company_name)
def get_absolute_url(self):
return reverse('jobs:detail',kwargs={'pk': self.pk})
用户和公司模型:
class User(AbstractBaseUser,PermissionsMixin):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
phone_number = models.CharField(max_length=15)
email = models.EmailField(max_length=250,unique=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
last_login = models.DateTimeField(null=True,blank=True)
date_joined = models.DateTimeField(auto_now_add=True)
objects = UserManager()
username_FIELD = 'email'
EMAIL_FIELD = 'email'
def __str__(self):
return self.first_name
def get_absolute_url(self):
return "/users/%i/" % self.pk
class Company(models.Model):
owner = models.ForeignKey(User,on_delete=models.CASCADE)
company_name = models.CharField(max_length=100,unique=True)
company_address = models.CharField(max_length=100,unique=True)
company_website = models.URLField(blank=True,null=True)
company_verified = models.BooleanField(default=False)
def __str__(self):
return self.company_name