@jagrmi
beginner python developer

Как при использовании objects,filter() при фильтровании по данным ForeignKey получать данные из таблицы которые с модели на которую ссылка?

Есть модель
class ModuleWork(models.Model):
    module = models.ForeignKey(Module)
    module_number = models.ForeignKey(NumberModule)
    module_description = models.TextField()
    project = models.ForeignKey(Project)
    room = models.ForeignKey(Room)
    room_number = models.ForeignKey(NumberRoom)
    module_work_designation = models.CharField(max_length=20)
    executor = models.ForeignKey(User)
    module_work_is_produced = models.BooleanField()
    important = models.ManyToManyField(ImportantFeatures, blank=True)

    def __str__(self):
        return '{}-{}{}-{}{}'.format(self.project, self.room, self.module_number, self.module, self.module_number)


Одна из вьюшек
class ModuleView(DetailView):
    model = ModuleWork
    template_name = 'module.html'

    def get_context_data(self, **kwargs):
        context = super(ModuleView, self).get_context_data(**kwargs)
        project_objectives = ProjectObjectives.objects.filter(module_work=self.kwargs['pk'])
        types_module = Module.objects.all()
        images = ImageModule.objects.filter(module_work=self.kwargs['pk'])
        image_main = ImageModule.objects.filter(module_work=self.kwargs['pk'], image_type=3)
        context['image_main'] = image_main
        context['images'] = images
        context['project_objectives'] = project_objectives
        context['types'] = types_module
        context['pk'] = self.kwargs['pk']  # Edit
        return context

    def get(self, request, *args, **kwargs):
        return super(ModuleView, self).get(request, *args, **kwargs)


Строчка из кода выше
image_main = ImageModule.objects.filter(module_work=self.kwargs['pk'], image_type=3)


image_type - это фориджнкей в модели.
Как сделать чтобы фильтровало не по image_type_id а по тестовому значению из таблицы на которую ссылается это поле.
  • Вопрос задан
  • 163 просмотра
Решения вопроса 1
@jagrmi Автор вопроса
beginner python developer
Если кому интересно нашел свою ошибку разобрал свою проблему
8b39ce72aee74e70bdc7f9ab52a79449.PNG
обращался к примеру
{{ object.project_id }}
а нужно было
{{ object.project.project }}
текст в коде дан для примера
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы