2017-11-21 8 views
0

私はコメントされたコメントIDをデータベースに保存します。そのために私は2つのモデルを持っています:ComentarioとPregunta。下記をご覧:コメントは、私は 'comentario_preguntado' IDとして 'comentario' IDを保存するコメントがcomment.idを別のオブジェクトに保存します

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) 

。そのために私は次のビュー作成しました:

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)をどのように保存するか分かりません。

はあなたのURLは、モデルインスタンスの主キーは、ビューから参照できるように宣言する必要があり

+0

を、あなたがポストにコメントを保存したいわけ? –

+0

あなたはurls.pyのコードを提供できますか? – navyad

+0

comentarioListar2のurls.pyを追加しました。私がしたいのは、comentario.id(コメントがついたとき)を取得し、comentario_preguntado.idとして保存することです。 – JohnWire

答えて

0

あなたの助けをありがとうございました。

それはこのようにする必要があります:

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

ので、URLの例は以下のようになり/ listar2/101 /。 101は、あなたのComentarioモデルインスタンスのIDです。

次に、あなたが定義した関数とビューでアクセスできます

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

あなたの答えをありがとうが、私が正確にやりたいことは、.urlとテンプレートを変更せずにコメントIDを取得することです。上記のようにviews.pyを変更しました。 – JohnWire

関連する問題