Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

359
Visualizações
Cómo acceder a pk en vistas (Django)

Estoy escribiendo un pequeño programa de chat en Django pero tengo problemas para avanzar.

Aquí está el código:

modelos.py

 from django.db import models from datetime import datetime from django.utils import timezone class Chat(models.Model): chatname = models.CharField(max_length=100) description = models.TextField() created_at = models.DateTimeField(default=datetime.now, blank=True) def __str__(self): return self.chatname class Comment(models.Model): chat = models.ForeignKey(Chat, on_delete=models.CASCADE) commenter = models.CharField(max_length=30) comment = models.TextField() created_at = models.DateTimeField(default=datetime.now, blank=True) def __str__(self): return self.comment

urls.py

 from django.conf.urls import url from . import views from django.views.generic import ListView from chat.views import CommentList app_name = 'chats' urlpatterns = [ url(r'^$', views.index, name="index"), url(r'^comments/(?P<pk>[0-9]+)/$', views.CommentList.as_view(), name='comments'), ]

vistas.py

 from django.shortcuts import render, redirect from django.http import HttpResponse from django.contrib.auth import authenticate, login from django.views import generic from .models import Chat, Comment def index(request): username = None if request.user.is_authenticated(): username = request.user.username chats = Chat.objects.all()[:10] context = { 'chats':chats } return render(request, 'chat/index.html', context) class CommentList(generic.ListView): queryset = Comment.objects.filter(chat_id=1) context_object_name = 'comments'

Mi comment_list.html

 {% extends "chat/base.html" %} {% block content %} <a href="/chat/">Go back</a> <h3>Comments</h3> <h2>{{chat.id}}</h2> <ul> {% for comment in comments %} <li>{{ comment.commenter }}: {{ comment.comment }}</li> {% endfor %} </ul> {% endblock %}

La estructura de mi base de datos contiene estos dos modelos: chat y comentario. Se supone que cada chat (sala) tiene sus propios comentarios. Usé 'models.ForeignKey' para poder filtrar los comentarios de cada chat (sala). En mi index.html enumero todos los chats y cada uno de ellos tiene un hipervínculo a la sección /comentarios/.

En mi views.py tengo esta línea: 'queryset = Comment.objects.filter(chat_id=1)' Chat_id es la columna en la tabla de comentarios sql y tal como está ahora solo mostrará los comentarios que pertenecen al chat con pk =1. ¿Cómo puedo acceder automáticamente al chat para las diferentes direcciones URL /comentarios/1/ /comentarios/2/ y así sucesivamente?

Espero que la explicación sea clara. Lo siento principiante aquí, puedo tratar de explicar más si no tiene mucho sentido.

Mejor, Fabián

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Debe definir el método get_queryset en lugar del atributo queryset independiente.

 def get_queryset(self, *args, **kwargs): return Comment.objects.filter(chat_id=self.kwargs['pk'])
about 4 years ago · Santiago Trujillo Relatório

0

En lugar de CommentList , puede usar la vista simple:

 def comments_index(request, chatid): return render(request, 'xxx/comment_list.html', { 'comments': Comment.objects.filter(chat_id=chatid) })

Y en URL:

 url(r'^comments/(?P<chatid>[0-9]+)/$', views.comments_index, name='comments'),
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda