Как получить идентификатор из шаблона в представлениях, используя Django rest framework - PullRequest
0 голосов
/ 01 мая 2020

Я совершенно новичок в Django rest framework.

Это мой models.py

class Comments(models.Model):
    Blog_key = models.ForeignKey(Blog, on_delete = models.CASCADE)
    user_key = models.ForeignKey(User, on_delete = models.CASCADE)

    comment_content = models.TextField(blank = True, null=True)
    time_Commented = models.TimeField(auto_now_add = True)

У меня есть блог, и я пытаюсь добавить к нему комментарии, используя ajax

Мой serializers.py выглядит примерно так

from django.contrib.auth import get_user_model
from rest_framework import serializers

from .models import Comments, Blog

User = get_user_model()

class UserDisplaySerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = [
            'username',
        ]


class BlogDisplaySerializer(serializers.ModelSerializer):
    class Meta:
        model = Blog
        fields = [
            'title',
        ]

class CommentsModelSerializer(serializers.ModelSerializer):
    user_key = UserDisplaySerializer(read_only=True)
    Blog_key = BlogDisplaySerializer(read_only=True)
    class Meta:
        model = Comments
        fields = [
            'user_key',
            'Blog_key',
            'comment_content',
    ]

Как мы видим, у меня есть идентификатор блога в модели с внешним ключом с моделью блога.

Итак, Чтобы сохранить комментарий, мне нужен идентификатор пользователя comment_content и идентификатор блога.

Мой views.py выглядит так

class CommentsCreateAPIView(generics.CreateAPIView):
    serializer_class = CommentsModelSerializer

    def perform_create(self, serializer):
        serializer.save(user_key=self.request.user) #Here I can get user Id

Мой вопрос: как получить идентификатор блога, я могу получить идентификатор пользователя и может удалить ошибку. Но я не могу удалить ошибку. «Пустое значение в столбце« Blog_id »нарушает ненулевое ограничение»

Это очевидно, у меня нет идентификатора блога.

Теперь моя часть шаблона. Я не занимался проектированием, но вот это

<form method="POST" id="CommentAjax">
    {% csrf_token %}
    <input type="text" name="comment_content"><br>
    <input type="hidden" name="Blog_key" value="{{ object.id}}"> 
    <input type="submit" value="Comment">
</form>

Я скрыл идентификатор блога и, показывая данные блога (т. Е. Заголовок, детали и прочее), передал идентификатор, думая, что могу использовать его в представлениях .py, как в представлении на основе функций, мы можем получить данные, написав request.POST ['Blog'].

Но это не сработало. Но теперь я знаю, почему это не сработало. Поэтому мой вопрос заключается в том, как установить идентификатор блога?

моя ajax функция на всякий случай

$("#CommentAjax").submit(function(event){
    alert("sending")
    event.preventDefault();
    var this_ = $(this)
    var formData = this_.serialize()

    $.ajax({
        url: "{% url 'CommentSave' %}",
        data: formData,
        method: "POST",
        success: function(data){
            console.log(data)
            fetchComments()
        },
        error: function(data){
            console.log("error")
            console.log(data)
        }
    })
})

Хотя сейчас я не использую ajax, так как сейчас я прямо иду чтобы связать блог / Comment-Save

, как в urls.py Я написал путь ('Comment-Save', CommentsCreateAPIView.as_view (), name = 'CommentSave'),

I didn ' Не знаю, что искать для этой проблемы, я пробовал разные вещи, но не получил правильного ответа, так что вот, простите меня, если это дубликат.

...