Django моделей запросов - PullRequest
       17

Django моделей запросов

0 голосов
/ 23 апреля 2020

У меня есть 3 таблицы person (id, email, пароль, тип), user_location (id, location, u_id) и отзывы (id, review, from_id, to_id). User_location (u_id) является внешним ключом к человеку (id). Рецензия (from_id, to_id) также чужая для человека (id). Так, как я могу отфильтровать человека с типом 'a' и местоположением 'b' и отзывами, которые он получил с именем рецензентов?

models.py

class Person(models.Model):
    email = models.CharField(max_length=30)
    pwd = models.CharField(max_length=30)
    type = models.CharField(max_length=30)

class User_locations(models.Model):
    location = models.CharField(max_length=30)
    u_id = models.ForeignKey('Person', on_delete=models.CASCADE)

1 Ответ

0 голосов
/ 23 апреля 2020

Не уверен, что я действительно понимаю, что вы пытаетесь сделать, но это должно указать вам правильное направление. Не забудьте сослаться на do c для отношений «многие к одному» и поиска, которые охватывают отношения . Там говорится:

Чтобы сослаться на «обратную» связь, используйте строчное имя модели.

А затем используйте обычный __ для доступа к атрибутам .

a_and_b = Person.objects.filter(type='a', user_locations__location='b')
reviewers = Person.objects.filter(to_id__in=a_and_b)

Первый запрос выбирает всех пользователей с type a и location b. Второй запрос фильтрует эти результаты. Это все не проверено, поэтому вам, возможно, придется немного подправить. Итог: следите за отношениями. В качестве примечания вы можете прочитать о Django соглашениях по именованию моделей.

...