Как получить доступ к «absolute_url» экземпляра модели Django в функции Python через набор запросов - PullRequest
0 голосов
/ 01 апреля 2019

Как получить доступ к значению / строке из определенного метода - get_absolute_url, через Django ORM Queryset, внутри функции python в пределах views.py.

 def get_absolute_url(self):
    """Returns the url to access a particular instance of the model."""
    return reverse('model-detail-view', args=[str(self.id)])

Код выше - пример из MozillaСеть разработчиков.Как получить доступ - model-detail-view, для каждого экземпляра модели в указанном ниже Queryset.

Приведенный ниже код не дает никаких результатов, скорее, ОШИБКА ==

queryset = myModel.objects.get_absolute_url()

AttributeError: у объекта 'Manager' нет атрибута 'get_absolute_url'

Вторая попытка с возвращаемым значением метода reverse также завершается неудачно с аналогичным AttributeError.

queryset = myModel.objects.model-detail-view()

AttributeError: у объекта 'Manager' нет атрибута 'model-detail-view'

Wantedчтобы получить отдельные элементы - "model-detail-view", строки и передать их в dataTable.js как часть Python DF, далее передаваемого как JSON.

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

myModel.objects является диспетчером , а не экземпляром этого класса модели.Сначала вам нужно получить экземпляр, например:

instance = myModel.objects.get(pk=1)
instance.get_absolute_url()

Если вы хотите получить этот результат для всего набора запросов, вы можете использовать:

urls = [obj.get_absolute_url() for obj in myModel.objects.all()]

Это только отправная точка,Вы, вероятно, должны разбить на страницы вышесказанное, так как в противном случае это будет очень дорогой запрос.Может быть, посмотрите сериализаторы Django Rest Framework , если вы хотите сделать это более надежным способом.

0 голосов
/ 01 апреля 2019

Еще раз спасибо @nimasmi, теперь я могу получить абсолютный URL-адрес экземпляра модели, как показано здесь, первичный ключ жестко задан для проверки вашего кода ==

myModel_instance = csv_document.objects.get(pk=164)
 print(myModel_instance.get_absolute_url())      
#prints 
/dc/eda_action/CSV_Upload_to_psqlaacc47/```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...