Джанго Сельдерей. Опубликовать публикацию на публикации_датыPython

Программы на Python
Ответить
Anonymous
 Джанго Сельдерей. Опубликовать публикацию на публикации_даты

Сообщение Anonymous »

У меня есть модель Post. Есть полеPublish_date. Если сообщение имеет запланированный статус, мне нужно выполнить функцию публикации в дату публикации. Как я могу это сделать?
models.py:
class Post(models.Model):
STATES = (
('draft', 'Draft'),
('published', 'Published'),
('planned', 'Planned')
)
state = models.CharField(choices=STATES, default=STATES[0][0])
channels = models.ManyToManyField('channel.Channel')
creator = models.ForeignKey('authentication.User', on_delete=models.SET_NULL, null=True)
publish_date = models.DateTimeField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

@receiver(post_save, sender=Post)
def reschedule_publish_task(sender, instance, **kwargs):
# There should be a task setting for a specific time here, as I understand it

Я пытался это сделать, но не получилось, задача не выполнена.
models.py
@receiver(post_save, sender=Post)
def reschedule_publish_task(sender, instance, **kwargs):
task_id = f"publish_post_{instance.id}"

if instance.state == 'planned' and instance.publish_date:
publish_post.apply_async((instance.id,), eta=instance.publish_date, task_id=task_id)

tasks.py
@shared_task
def publish_post(post_id: int) -> None:
from .models import Post

post = Post.objects.filter(id=post_id).first()
if post:
if post.state == 'planned' and post.publish_date

Подробнее здесь: https://stackoverflow.com/questions/792 ... blish-date
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»