DJANGO,MTTP评论,IntegrityError

时间:2012-04-20 06:13:03

标签: django comments

当我尝试将此评论插入我的MTTP时,我收到此错误。我使用MTTP而不是MTTP-Comments。请帮忙!

IntegrityError at /tasks/3264/
(1452, 'Cannot add or update a child row: a foreign key constraint fails 
(`taskdb`.`tasks_comment`, CONSTRAINT `task_id_refs_id_1c5648d2` FOREIGN KEY      
(`task_id`) REFERENCES `tasks_task` (`id`))')

我的模特是:

class Task(models.Model):
    class Meta:
        app_label = 'tasks'
        ordering = ('taskid',)

    # meta
    taskid = models.IntegerField(default=0, db_index=True)

    def __unicode__(self):
        return u'%s' % self.taskid

class Comment(MPTTModel):
    task = models.ForeignKey(Task)
    author = models.CharField(max_length=60)
    comment = models.TextField()
    added  = models.DateTimeField(default=datetime.now)
    # a link to comment that is being replied, if one exists
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')

    class MPTTMeta:
        order_insertion_by=['added']

我的观点是:

if request.POST:
    comment = Comment(
        author=request.POST['author'],
        comment=request.POST['comment'],
        task_id='3264',
    )
    comment.save()

我的HTML是:

<form action="" method="post">
    <input type="text" value="" name="author">
    <textarea name="comment"></textarea>
    <input type="submit" value="Add comment"> </form>

2 个答案:

答案 0 :(得分:0)

那么,问题是什么?在id表为3264的任务表中似乎没有记录。

答案 1 :(得分:0)

在评论创建中放置任务ID并不是一个好主意。 您需要先获取Task实例。

所以,试试这个:

from django.shortcuts import get_object_or_404
task = get_object_or_404(Task, pk=3264)

comment = Comment.objects.create (
        author=request.POST['author'],
        comment=request.POST['comment'],
        task=task,
    )

并检查具有此ID的任务是否确实存在。