Как правильно определить 'get_absoute_url' в Django? - PullRequest
0 голосов
/ 15 апреля 2019

Не могли бы вы помочь мне правильно определить get_absolute_url ?Сейчас меня перенаправили на '... / product / 32949492331' , однако URL должен выглядеть следующим образом: '... / product / 1' , '... / product / 2' и т. д. Вот models.py :

class Product(models.Model):
    product_id = models.CharField(max_length=50)
    pub_date = models.DateTimeField(default=datetime.now)
    title = models.CharField(max_length=255)
    url = models.TextField()
    price = models.FloatField()

    def get_absolute_url(self):
        return reverse('detail', kwargs={'product_id': self.product_id})

views.py:

def detail(request, product_id):
    product = get_object_or_404(Product, pk=product_id)
    return render(request, 'product/detail.html', {'product': product})

urls.py:

urlpatterns = [
    path('add', views.add, name='add'),
    path('<int:product_id>', views.detail, name='detail'),
]

Это продолжение моего предыдущего вопроса .Заранее спасибо за помощь!

1 Ответ

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

На данный момент у вас есть:

return reverse('detail', kwargs={'product_id': self.product_id})

Так что, если это возвращает URL с 32949492331, это потому, что поле product_id для этого объекта равно 32949492331.

Возможно, вы хотите использовать вместо этого первичный ключ продукта:

return reverse('detail', kwargs={'product_id': self.pk})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...