@dark46

Как привязать авторов постов(в мини-блогах) в моделях django?

В общем есть модель постов:
class Post(models.Model):

    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=255)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', args=[str(self.id)])

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    class Meta:
        ordering = ['published_date']


Как мне сделать так, чтобы любой пользователь мог добавлять себе любого автора и соответственно выводить только их посты?
  • Вопрос задан
  • 676 просмотров
Пригласить эксперта
Ответы на вопрос 1
@mbrutus
Люблю python и блинцы со сметанкой
Как вариант наследовать от модели User и добавить ManyToManyField на самого себя

сlass CustomUser(User):
    preferred_author = models.ManyToManyField('self', symmetrical=False, related_name='preferred', ...)


При выборе пользователем нового автора просто добавлять
SELECTED_USER.preferred.add(author)

Дальше при фильтрации, чтобы вывесли все статьи выбраных пользователем авторов

Post.objects.filter(author__in=SELECTED_USER.preferred)

Где SELECTED_USER это пользователь для которого нужно вывести статьи.

Код писал из головы поэтому за точность не ручаюсь, больше для примера
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы