Alguns problemas com a confirmação dos urls em vista Django
-
05-07-2019 - |
Pergunta
Meus modelos:
História:
categories = models.ManyToManyField(Category)
Categoria: nome | lesma
Meus urls:
(r'^(?P<cat_slug>.*)/$', 'news.views.archive_category'),
E vistas , eu uso:
def archive_category(request, cat_slug):
entry = News.objects.get( categories__slug=cat_slug )
return render_to_response('news_archive_category.html', {'entry':entry, })
Tem algo de errado se eu tiver uma história de dois ou mais categoria. Por favor me ajude. Muito obrigado!
Solução
category = Category.objects.filter(slug=cat_slug)#get the category requested
#now get all the entries which have that category
entries = News.objects.filter(categories__in=category)#because of the many2many use __in
editado após comentário
Outras dicas
O que você quer que aconteça nesta circunstância? Você está tentando mostrar uma lista de todas as entradas em uma categoria, ou apenas um?
News.objects.get()
irá sempre obter um único item, ou levantar uma exceção se houver mais do que um correspondem aos critérios. Ou você deve usar filter()
vez, passando um QuerySet do modelo, assim que você vai precisar para percorrer; ou, adicione um critério para o seu urlconf para que você obtenha a lesma entrada específica, bem como, para que você só tem um objeto.