Ich mache eine einfache Post und Kommentar page.In diesem, wenn ich einen Beitrag kommentieren ich versuche, diesen Kommentar auf der Datenbank zu speichern Titel des Beitrags, auf dem Kommentar gemacht wird, indem seine id verwendet wird. Aber wenn ich versuche, das post_title Attribut von Post_Comment zu instanziieren, indem ich comments.post_title = header.title mache, gibt es einen Wert eror say Kann "u'kjashdkh '" nicht zuweisen: " Post_Comment.post_title "muss eine" Post "-Instanz sein. Bitte beachten Sie, dass "kjashdkh" der Posttitel ist.Speichern eines Kommentars Objekt zu einem Beitrag in einem Blog in Django-Datenbank
class Post(models.Model):
title= models.CharField (max_length=100)
body= models.TextField()
created=models.DateTimeField()
def __str__(self):
return self.title
class Post_Comment(models.Model):
comment= models.TextField()
post_title=models.ForeignKey(Post)
Und meiner Meinung nach ist:
def comment(request,pk):
header=Post.objects.get(id=pk)
comments=Post_Comment(comment=request.POST['comment'])
comments.post_title=header.title
header.delete()
comments.save()
return HttpResponseRedirect('/blog/')
Nun? Der Fehler ist ziemlich klar. Sie haben 'post_title = models.ForeignKey (Post)' gesetzt, so dass es ein 'Post'-Objekt erwartet, aber Sie geben ihm' header.title', was ein 'CharField' oder ein String-Objekt ist. Scheint so, als hättest du ein grundlegendes Missverständnis darüber, wie fremde Schlüssel in Django funktionieren. Hast du das Tutorial gelesen? –
Danke man.Ich bin ein wenig neu bei der Verwendung von Fremdschlüssel.Aber wie soll ich dieses Problem beheben. –
Ich denke, du könntest 'comments.post_title = header', aber du kannst den Blogpost (' header.delete() ') nicht in der nächsten Zeile löschen. Sie sollten genauere Variablennamen in Betracht ziehen. Rufen Sie einen Blog-Beitrag "header" und einen Verweis darauf später "post_title" macht dies sehr verwirrend, um darüber zu begründen. –