将comment.id保存到另一个对象

时间:2017-11-21 18:43:32

标签: django database python-3.x django-models django-views

我想在我的数据库中保存已注释的评论ID。为此我有两个模型:Comentario和Pregunta。看下面:

models.py

class Comentario (models.Model):
    titulo = models.CharField(max_length=50)
    texto = models.CharField(max_length=200)
    autor = models.ForeignKey (Perfil, null=True, blank=True, on_delete=models.CASCADE)
    fecha_publicacion = models.DateTimeField(auto_now_add=True)
    tag = models.ManyToManyField(Tags, blank=True)

    def __str__(self):
        return (self.titulo)

class Pregunta (models.Model):
    descripcion = models.CharField(max_length=150)
    autor = models.ForeignKey (Perfil, null=True, blank=True, on_delete=models.CASCADE)
    fecha_pregunta = models.DateTimeField(auto_now_add=True)
    comentario_preguntado = models.ForeignKey(Comentario, null=True, blank=True, related_name="pregunta_set")

    def __str__(self):
        return (self.descripcion)

当评论评论时,我想将'comentario'id保存为'comentario_preguntado'id。为此我创建了下一个视图:

views.py

 def ComentarioListar2 (request):
     aa=Puesto.objects.filter(nombre_puesto=request.user.nom_puesto).values_list('etiquetas')
     bb=Tags.objects.filter(id__in=aa)
objects=Comentario.objects.filter(tag__in=bb).exclude(autor__id=request.user.id)
     form = preguntaform(request.POST or None)

     if request.method == 'POST' and form.is_valid():
         form.instance.autor = request.user
         form.instance.comentario_preguntado=request.comentario.id
         form.save()
     return render(request, 'home/comentario_listar.html', {'objects': objects, 'form': form})

urls.py

urlpatterns = [

    url(r'^listar2$', views.ComentarioListar2, name="listar2"),

    ]

但是我得到了这个错误“ComentarioListar2()缺少1个必需的位置参数:'Comentario_id'”

我不知道如何在comentario_preguntado id中保存评论的评论ID(comentario_id)。

谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

需要声明您的URL,以便可以从视图中引用模型实例的主键。

应该是这样的:

url(r'^listar2/(?P<Comentario_id>[0-9]+)/$', views.ComentarioListar2, name="listar2"),

因此,URL的示例是/ listar2 / 101 /。其中101是您的Comentario模型实例的ID。

然后,您可以使用您定义的功能在视图中访问它:

def ComentarioListar2 (request, Comentario_id):
                                  ^^^^^^^