Я получаю ошибку при использовании get_absolute_url с полем slug. Перепробовал несколько предложений, которые уже существуют в стеке, но не сработали. Может кто-нибудь помочь мне с этим, пожалуйста. Пожалуйста, используйте эту ссылку для отслеживания.
models.py
Коды в моделях.
from django.urls import reverse
class Post(models.Model):
title = models.CharField(max_length=50)
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
draft = models.BooleanField(default=False)
publish = models.DateTimeField(auto_now=False, auto_now_add=False)
slug = models.SlugField(unique=True)
image = models.ImageField(upload_to=upload_location,
null=True,
blank=True,
width_field="width_field",
height_field="hieght_field")
hieght_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
content = models.TextField()
updates = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
def get_absolute_url(self):
return reverse('post:detail', kwargs={'slug':self.slug})
Views.py
коды в представлениях.
def post_list(request):
queryset_list = Post.objects.active()
if request.user.is_staff or request.user.is_superuser:
queryset_list = Post.objects.all()
query = request.GET.get('q')
if query:
queryset_list = queryset.filter(
Q(title__icontains=query)
).distinct()
context = {
'object_list':queryset_list,
'posts': page,
"page_request_var": page_request_var,
}
return render(request, 'index.html', context)
urls.py
отображение URL.
urlpatterns = [
path('detail/<slug:slug>/', views.detail, name='detail'),
]
html page
код в индексе. html
{% for obj in object_list %}
<div class="container">
<p class="card-text">{{obj.content|linebreaks|truncatechars:120}}</p>
<a href="{{obj.get_absolute_url}}" class="btn btn-primary">View</a>
<!-- <a href="{% url 'post:detail' pk=obj.id %}"> {{obj.title}} </a> -->
</div>
{% endfor %}