am new to Django and I getting some difficulties and I'm confused about the correct way to use Django custom model managers:
charities/models.py:
from django.db import models
from accounts.models import User
class Benefactor(models.Model):
Level = ((0, 'Beginner'), (1, 'Intermediate'), (2, 'Expert'))
user = models.OneToOneField(User, on_delete=models.CASCADE)
experience = models.SmallIntegerField(choices=Level, default=0)
free_time_per_week = models.PositiveSmallIntegerField(default=0)
class Charity(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
reg_number = models.CharField(max_length=10)
class TaskManager(models.Manager):
def related_tasks_to_charity(self, user):
my_charity = str(Charity.objects.get(user = user))
return self.filter(charity = my_charity)
def related_tasks_to_benefactor(self, user):
my_bonefactor = str(Benefactor.objects.get(user = user))
return self.filter(assigned_benefactor = my_bonefactor)
def all_related_tasks_to_user(self, user):
return self.filter(state = "P")
class Task(models.Model):
gen_choice = (('F', 'Female'), ('M', 'Male'))
sta_choice = (('P', 'Pending'), ('W', 'Waiting'), ('A', 'Assigned'), ('D', 'Done '))
# id = models.AutoField() !REMOVE id FIELDS
assigned_benefactor = models.ForeignKey(Benefactor, null=True, on_delete=models.SET_NULL)
charity = models.ForeignKey(Charity, on_delete=models.CASCADE, related_name='User_Charity')
age_limit_from = models.IntegerField(blank=True, null=True)
age_limit_to = models.IntegerField(blank=True, null=True)
date = models.DateField(blank=True, null=True)
description = models.TextField(blank=True, null=True)
gender_limit = models.CharField(max_length=50, blank=True, null=True)
state = models.CharField(max_length=50, choices=sta_choice, default='Pending')
title = models.CharField(max_length=100)
objects = TaskManager()
my problem is here and these 3 defines:
class TaskManager(models.Manager):
def related_tasks_to_charity(self, user):
my_charity = str(Charity.objects.get(user = user))
return self.filter(charity = my_charity)
def related_tasks_to_benefactor(self, user):
my_bonefactor = str(Benefactor.objects.get(user = user))
return self.filter(assigned_benefactor = my_bonefactor)
def all_related_tasks_to_user(self, user):
return self.filter(state = "P")
def related_tasks_to_charity: In this function, return all the Tasks given to the user as charity in queryset format.
For example, if the user does not have a charity, obviously none of the Tasks are given to him as a charity, and your function must return the value none in a queryset.
def related_tasks_to_benefactor: In this function, return all the tasks given to the user as a benefactor in queryset format.
For example, if the user is not a benefactor, obviously none of the Tasks are given to him as a benefactor, and your function must return the value of none in the form of a queryset.
def all_related_tasks_to_user: In this function, return all the Tasks that the user has access to in a queryset format.
A user has access to Tasks whose status is Pending or given to the user as a benefactor or charity.
The function of this function is to return all these Tasks as a queryset...