Как получить идентификатор объекта в представлении из контекста? - PullRequest
1 голос
/ 02 февраля 2020

У меня есть 2 модели: «Портфолио» и «Скриншоты». «Скриншоты» имеют поле «проект» - это внешний ключ к «Портфолио». И у меня есть представление «ProjectDetailView». Я добавил модель «Скриншоты» через get_context_data (). Как получить по фильтру только объекты 'Скриншоты' модели, где

context['screenshots'] = Screenshot.objects.filter(project=???) # id from Project object

Мой код ниже. Это моя модель Портфолио:

class Project(BaseModel):
    slug = models.SlugField(verbose_name='URL', unique=True, blank=False)
    category = models.ManyToManyField(Category, verbose_name='Category')
    title = models.CharField(max_length=200, verbose_name='Title', blank=False)
    publication = models.BooleanField(verbose_name='Publication', default=True)

И моя модель Скриншоты:

class Screenshot(BaseModel):
    image = models.ImageField(upload_to='uploads/projects/%Y/%m/', verbose_name='Image', blank=False)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)

Это view.py:

class ProjectDetailView(DetailView):
    model = Project
    template_name = 'portfolio/project_detail.html'
    context_object_name = 'project'
    queryset = Project.objects.filter(publication=True)

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['screenshots'] = Screenshot.objects.filter(project=???) # id from Project object
        return context

1 Ответ

0 голосов
/ 03 февраля 2020
def get_context_data(self, **kwargs):
    context = super().get_context_data(**kwargs)
    context['screenshots'] = Screenshot.objects.filter(project=self.object) 
    return context

И вы также можете передать свойства экземпляра как screenshot_set

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...