class AccountManager(models.Model):
account_manager = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
def __str__(self):
return str(self.account_manager)
account_manager = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
def __str__(self):
return str(self.account_manager)
class Client(models.Model):
account_manager = models.ForeignKey(AccountManager, on_delete=models.CASCADE, related_name='account_manager_clients')
client = models.CharField(max_length=255)
def __str__(self):
return self.client
account_manager = models.ForeignKey(AccountManager, on_delete=models.CASCADE, related_name='account_manager_clients')
client = models.CharField(max_length=255)
def __str__(self):
return self.client
class Contract(models.Model):
client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='client_contracts')
site_name = models.CharField(max_length=255)
def __str__(self):
return self.site_name
client = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='client_contracts')
site_name = models.CharField(max_length=255)
def __str__(self):
return self.site_name
I can restrict the clients to the specific account managers by using the following view"
class ClientListView(LoginRequiredMixin, ListView):
model = Client
template_name = "clients/list.html"
def get_queryset(self, *args, **kwargs):
return (
super()
.get_queryset(*args, **kwargs)
.filter(account_manager__account_manager=self.request.user)
)
model = Client
template_name = "clients/list.html"
def get_queryset(self, *args, **kwargs):
return (
super()
.get_queryset(*args, **kwargs)
.filter(account_manager__account_manager=self.request.user)
)
However I can't seem to restrict the contracts to the account manager with the following view:
class AMContractDetailView(LoginRequiredMixin, DetailView):
model = Contract
template_name = 'contracts/am_contract_detail.html'
def get_queryset(self, *args, **kwargs):
return (
super()
.get_queryset(*args, **kwargs)
.filter(client__account_manager=self.request.user.id)
)
model = Contract
template_name = 'contracts/am_contract_detail.html'
def get_queryset(self, *args, **kwargs):
return (
super()
.get_queryset(*args, **kwargs)
.filter(client__account_manager=self.request.user.id)
)
This allows account managers to see all the clients not just their own.
I know I am doing something fundamentally wrong but have got a bit lost!
Any help would be appreciated.
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/7405a8f2-bdac-4e20-b53b-3f9fefb6ea27n%40googlegroups.com.
No comments:
Post a Comment