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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top