Javascript 为什么我在这里得到空值?

Javascript 为什么我在这里得到空值?,javascript,python,angularjs,django,django-rest-framework,Javascript,Python,Angularjs,Django,Django Rest Framework,我在angular中使用$http.posts,如下所示: $scope.postComment = function(comment, post) { var json = JSON.stringify({ 'comments_post': post, 'comments_text':comment}); alert(json); $http.post("/api/v1/comments/", json).success(func

我在angular中使用$http.posts,如下所示:

$scope.postComment = function(comment, post) {
    var json = JSON.stringify({
         'comments_post': post,
        'comments_text':comment});
    alert(json);

      $http.post("/api/v1/comments/", json).success(function(json, status) {
            $scope.comment = json;

      })
};
{
        "comments_text": "n km mn mn",
        "comments_post": {
            "id": 18,
            "title": "asdfasdf",
            "image": null,
            "height_field": 0,
            "width_field": 0,
            "content": "asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf vv",
            "check": true,
            "updated": "2016-05-25 в 18:13",
            "timestamp": "2016-05-25 в 18:13",
            "user": {
                "id": 1,
                "password": "pbkdf2_sha256$24000$kSUmB51QpUSi$yWJZJt539Mj7+TLGz1tS+uIMk9dHs766opPlw8FEX0E=",
                "last_login": "2016-05-27 в 22:36",
                "is_superuser": true,
                "username": "alexandr",
                "first_name": "",
                "last_name": "",
                "email": "alexdomoryonok@gmail.com",
                "is_staff": true,
                "is_active": true,
                "date_joined": "2016-05-25 в 10:33",
                "groups": [],
                "user_permissions": []
            }
        },
        "posted": "2016-05-27 в 22:55",
        "comments_author": {
            "id": 1,
            "password": "pbkdf2_sha256$24000$kSUmB51QpUSi$yWJZJt539Mj7+TLGz1tS+uIMk9dHs766opPlw8FEX0E=",
            "last_login": "2016-05-27 в 22:36",
            "is_superuser": true,
            "username": "alexandr",
            "first_name": "",
            "last_name": "",
            "email": "alexdomoryonok@gmail.com",
            "is_staff": true,
            "is_active": true,
            "date_joined": "2016-05-25 в 10:33",
            "groups": [],
            "user_permissions": []
        },
        "id": 165
    }
请求有效载荷: 我的注释json必须如下所示:

$scope.postComment = function(comment, post) {
    var json = JSON.stringify({
         'comments_post': post,
        'comments_text':comment});
    alert(json);

      $http.post("/api/v1/comments/", json).success(function(json, status) {
            $scope.comment = json;

      })
};
{
        "comments_text": "n km mn mn",
        "comments_post": {
            "id": 18,
            "title": "asdfasdf",
            "image": null,
            "height_field": 0,
            "width_field": 0,
            "content": "asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf asdfasdf vv",
            "check": true,
            "updated": "2016-05-25 в 18:13",
            "timestamp": "2016-05-25 в 18:13",
            "user": {
                "id": 1,
                "password": "pbkdf2_sha256$24000$kSUmB51QpUSi$yWJZJt539Mj7+TLGz1tS+uIMk9dHs766opPlw8FEX0E=",
                "last_login": "2016-05-27 в 22:36",
                "is_superuser": true,
                "username": "alexandr",
                "first_name": "",
                "last_name": "",
                "email": "alexdomoryonok@gmail.com",
                "is_staff": true,
                "is_active": true,
                "date_joined": "2016-05-25 в 10:33",
                "groups": [],
                "user_permissions": []
            }
        },
        "posted": "2016-05-27 в 22:55",
        "comments_author": {
            "id": 1,
            "password": "pbkdf2_sha256$24000$kSUmB51QpUSi$yWJZJt539Mj7+TLGz1tS+uIMk9dHs766opPlw8FEX0E=",
            "last_login": "2016-05-27 в 22:36",
            "is_superuser": true,
            "username": "alexandr",
            "first_name": "",
            "last_name": "",
            "email": "alexdomoryonok@gmail.com",
            "is_staff": true,
            "is_active": true,
            "date_joined": "2016-05-25 в 10:33",
            "groups": [],
            "user_permissions": []
        },
        "id": 165
    }
但我得到了django的例外:

我的模板:

<div ng-repeat="post in filteredPosts" ng-if="post.check">

                <div class="row">
                    <div class="col-sm-5 col-sm-offset-3">
                        <div class="thumbnail post">
                            <div class="caption">
                    <span ng-if="post.image">
                    <img ng-src="{{post.image}}" class="img-responsive" alt="">
                    </span>
                                <p>{{post.content| limitTo:200}}...</p>
                                <p>Aвтор: <a ng-href='/authsys/{{post.user.username}}/'>{{post.user.username}}</a></p>
                                <p>Создано: {{post.timestamp}}</p>
                                <p>Обновлено: {{post.updated}}</p>

                                <div class="btn btn-danger" ng-if="user.user == post.user.username" method="delete"
                                     ng-click="deletePost(post)">Удалить
                                </div>
                            </div>
                            <div ng-repeat="comment in comments" ng-if="comment.comments_post.id == post.id">
                                <div class="panel panel-default">
                     <span ng-if="user.user == comment.comments_author.username">
                                          <a href="" ng-click="deleteComment(comment)" style="margin-left: 95%"><i
                                                  class="glyphicon glyphicon-remove"></i></a>
                         </span>
                                    <div class="panel-body">
                                        {{comment.comments_text}}
                                    </div>
                                    <p style="margin-left: 85%"><a
                                            href="/authsys/{{comment.comments_author.username}}/">{{comment.comments_author.username}}</a>
                                    </p>

                                </div>
                            </div>

                            <input type="text" ng-model="text">
                            <input type="button" class="btn btn-default" value="Добавить" ng-click="postComment(text, post)">
                        </div>
                    </div>
                </div>
            </div>

基本上错误看起来是什么,您的数据库在
评论发布id
上有
NOT NULL
约束,您正在尝试向该列插入值为NULL的内容

你的问题是:

$scope.postComment = function(comment, post) {
var json = JSON.stringify({
     'comments_post': post,
    'comments_text':comment});
alert(json);

  $http.post("/api/v1/comments/", json).success(function(json, status) {
        $scope.comment = json;

  })
};
您在数据库中插入的(至少是发送到要插入的路由)只有几个参数,您的表需要一个
comments\u post\u id
值,它不能为空。我不知道你的表之间的关系如何,但是你的
comments\u post\u id
myst有一个值。或者您通过post传递它的值,或者执行其他操作

//更新

看了你的代码后,你的评论和帖子之间就有了联系。我不知道它是如何与python一起工作的,但是,对于其他现代mvc框架,您必须插入一个东西,才能在关系的外键上插入这个主键

比如说

您必须插入一篇文章,然后插入引用该文章的注释。我将如何处理角度(伪算法)


首先,删除所有这些不必要的垃圾邮件……其次,也发布python代码。说出您所做的。@MatheusSilva您需要python代码的哪一部分?您在哪里查询数据库以获取此内容。我在页面($http.get)上使用angular进行映射@MatheusSilva i add models.py如果可以帮助您解决问题,请查看models.py。“comments\u post\u id”只是数据库中的关系我不知道python能为您提供多少帮助,但是,我从现代mvc框架中了解到的一点是:您必须从数据库的关系中插入模型,才能将其“连接”到另一个模型,因此它将在相关模型上具有外键。在你的例子中,你必须插入一篇帖子,然后插入引用该帖子id的评论。我是否足够清楚?帖子存在,我需要向其添加评论。好的,你只要发现如何做就可以了。我“建议”了一种方法,“注释”只是数据库中的关系,而不是模型中的字段