@AntonioMargaretty

Как сделать фильтрацию при использовании трёх таблиц, связанных между собой?

Задача: Вывести все посты из таблицы "Post" с только одним условием - "Они должны принадлежать одному адресу (твоему адресу, а все адреса брать из таблицы "Profile")".

Есть три таблицы:
1) User (дефолтная джанговская)

2) Profile
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    image = models.ImageField('Ваша фотография', default='default.jpg', upload_to='profile_pics')
    address = models.CharField('Адрес общежития', blank=True, null=True, max_length=250)

    def __str__(self):
        return f'{self.user.username} Profile'


3) Post
class Post(models.Model):
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField("Название ордера", max_length=120, help_text='Введите текст поста')

    price = models.FloatField("Стоимость всей еды", default=0)
    price_deliver = models.FloatField("Стоимость доставки", default=0)
    date_deliver = models.DateField("Дата ордера", default=timezone.now)
    time_deliver = models.TimeField("Время ордера", default='17:30:00')
    cnt_people = models.IntegerField("Количество людей", default=2, help_text='Минимум 2, включая вас')

    image = models.ImageField(
        'Картинка',
        upload_to='posts_pics/',
        blank=True,
        null=True
    )

    mod = models.CharField('Мод ордера', blank=True, null=True, max_length=250)


Я пытался это сделать так:
class PostListView(ListView):
    model = Post
    template_name = 'main/main.html'
    context_object_name = 'posts'

    def get_queryset(self):
        user = get_object_or_404(Profile, address=self.kwargs.get('address'))
        queryset = Post.objects.filter(author=user).order_by('-date_posted')
        return queryset


Но у меня ничего не вышло. Нужно писать запрос как-то по другому, но у меня не хватает опыта и знаний, сижу уже несколько часов на этим
помогите пж написать норм запрос)
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
Mi11er
@Mi11er
A human...
Тут ты получаешь Profile
user = get_object_or_404(Profile, address=self.kwargs.get('address'))


Тут почему то втыкаешь Profile в User
queryset = Post.objects.filter(author=user).order_by('-date_posted')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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