Django-limit_choices_to С ForeignKey на основе различных ссылок

Я делаю сайт по управлению зданиями на Django. У меня есть страница, которая является DetailView для каждого здания. На странице DetailView есть ссылка для добавления рабочего задания на ремонт. При создании рабочего задания я хотел бы, чтобы оно фильтровалось только для той страницы здания, с которой я пришел. Например, со страницы "здание/1", нажав на ссылку рабочего задания, можно было бы увидеть и выбрать только комнаты в здании с пк = 1. views.py

from django.shortcuts import render
from .models import Building, Room, Task, Task_Note
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView

# Create your views here.
class BuildingList(ListView):
    model = Building
    template_name = "dorm/buildings.html"

class BuildingDetail(DetailView):
    model = Building
    template_name = "dorm/building.html"

class TaskAdd(CreateView):
    model = Task
    fields = ["time", "room", "work_request_id", "description"]
    template_name = "dorm/add_task.html"

models.py

 from django.db import models
    from django.db.models.fields import DateTimeField, IntegerField, CharField, TextField
    from django.db.models.fields.related import ForeignKey
    import datetime
    
    from django.urls.base import reverse
    error = "Error"
    # Create your models here.
    class Building(models.Model):
        number = IntegerField(null = True, blank = True)
    
        @property
        def number_of_rooms(self):
            try:
                return Room.objects.filter(building = self).count()
            except:
                return error
        @property
        def number_of_active_tasks(self):
                x = 0
                q = Task.objects.all()
                for i in range(len(q)):
                    if q[i].building == str(self) and q[i].status == "A":
                        x += 1
                return x
    
    
        def __str__(self):
            return f"{self.number}"
            
    
    
    class Room(models.Model):
        number = IntegerField(null = True, blank = True)
        building = ForeignKey(Building, null = True, blank = True, on_delete = models.CASCADE)
    
        def __str__(self):
            return f"{self.building}/{self.number}"
    
    class Task(models.Model):
        room = ForeignKey(Room, null = True, blank = True, on_delete = models.CASCADE)
        work_request_id = IntegerField(null = True, blank = True)
        time = DateTimeField(null = True, blank = True, default = datetime.datetime.now())
        description = CharField(max_length = 1000, null = True, blank = True)
        STATUS_CHOICES = [
            ("A", "Active"),
            ("C", "Complete")
        ]
        status = CharField(max_length = 1, null = True, blank = True, choices = STATUS_CHOICES, default = "A")
        @property
        def building(self):
            try:
                return f"{self.room.building}"
            except:
                return error
    
        def __str__(self):
            return f"{self.work_request_id}"
        def get_absolute_url(self):
            return reverse("buildings")
    
    
    #________________________________NOTES__________________________________
    class Task_Note(models.Model):
        task = ForeignKey(Task, null = True, blank = True, on_delete = models.CASCADE)
        time = DateTimeField(null = True, blank = True)
        description = TextField(null = True, blank = True)
    
        def __str__(self):
            return f"{self.task.pk}"

   
Вернуться на верх