Передайте значение из запроса URL с подробным представлением Django generi c - PullRequest
1 голос
/ 07 мая 2020

Из GenericList при нажатии на один я перенаправляю на

    url(r'^machine/(?P<pk>[0-9]+)$', MachineDetailView.as_view(), name='machine-detail'),

где

class MachineDetailView(DetailView):
    model = Awg
    template_name = 'gui/machine_detail.html'
    context_object_name = 'last_entry'
    ordering = ['-timestamp']

Однако мне нужно получить записи AWG, где machine.id является внешним ключом в AWG.

На мой взгляд, это выглядело бы так:

class MachineDetailView(DetailView):
    last_entry = Awg.objects.filter(machine_id=Machine.objects.filter(id=pk).first()).first()
    model = Awg
    template_name = 'gui/machine_detail.html'
    context_object_name = 'last_entry'
    ordering = ['-timestamp']

Это не работает, потому что я не знаю, как получить pk, который находится в запрошенном URL . Извините, если нуб, я попытался посмотреть django документы.

1 Ответ

2 голосов
/ 07 мая 2020

Вы можете переопределить метод .get_object(..) [Django -doc] и выполнить запрос, который возвращает этот объект. вы можете получить параметр pk из шаблона URL через self.kwargs, который представляет собой словарь, содержащий параметры URL:

class MachineDetailView(DetailView):
    model = Awg
    template_name = 'gui/machine_detail.html'
    context_object_name = 'last_entry'

    def <b>get_object</b>(self, queryset=None):
        return Awg.objects.filter(
            machine_id=<b>self.kwargs['pk']</b>
        ).latest('timestamp')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...