Как узнать, был ли создан новый объект в Django? - PullRequest
1 голос
/ 07 марта 2020

У меня есть объект Post с комментариями, и я пытаюсь через некоторое время отправить ajax запросов l oop, чтобы проверить, были ли созданы новые комментарии, и, если они были, добавьте их в DOM.

Как этого добиться в django?

Вот мои модели:

class Post(models.Model):
    name = models.CharField(max_length=255)
    date_added = models.DateTimeField(auto_now_add=True)
    last_modified = models.DateTimeField(auto_now=True)

class PostComment(models.Model):
    comment = models.TextField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='post', related_query_name='post')
    date_added = models.DateTimeField(auto_now_add=True)
    last_modified = models.DateTimeField(auto_now=True)

Я пытался посмотреть каналы и веб-сокеты, но все учебники, которые я нашли использование старых версий django и python. Поэтому я решил просто добиться того же с ajax запросами через некоторое время l oop.

Я открыт для любых предложений о том, как достичь моего результата!

Ответы [ 2 ]

1 голос
/ 07 марта 2020

Вы можете использовать свой date_added, который является DateTimeField. По вашим запросам вы можете передать свой последний ответ на запрос datetime, и вы можете отфильтровать по date_added для большего значения, чем ваш последний запрос datetime. Пожалуйста, будьте осторожны с форматами даты.

last_request_datetime = request.POST.get('last_request_datetime')
new_posts = Post.objects.filter(date_added__gt=last_request_datetime)
1 голос
/ 07 марта 2020

Простая идея - запросить ваш бэкэнд для поста / комментария pk (поле с автоинкрементным значением по умолчанию Django), где значение pk превышает максимальное значение, уже запрошенное.

Учитывая известное max_pk:

Post.objects.filter(pk__gt=max_pk)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...