Как получить набор запросов из множества сообщений, полученных через Foreignkey (модель имеет только 2 поля) - PullRequest
0 голосов
/ 07 июня 2018

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

class Model_A(models.Model):
    user_b = models.ForeignKey(User_B, on_delete=models.CASCADE, null=True)
    project_c = models.ManyToManyField(Project_C, related_name="+", blank=True)

У user_b есть много project_c, как показано ниже, я хочу получить набор запросов из списка project_c текущего user_b:

id project_c_id
1   1
2   2    
3   3
4   4 
..  ..
..  .. 

Большое спасибо, очень признателен за любой совет !!!

Ответы [ 4 ]

0 голосов
/ 07 июня 2018

Вам необходимо значение related_name между Model_A и Project_C, как показано ниже:

class Model_A(models.Model):
    user_b = models.ForeignKey(User_B, on_delete=models.CASCADE, null=True)
    project_c = models.ManyToManyField(Project_C, related_name="projects", blank=True)

Затем запросите его по следующему коду:

Project_C.objects.filter(permits__user=self.request.user)
0 голосов
/ 07 июня 2018

модель = Model_A.objects.get (пользователь_b = пользователь)
проекты = Project_c.objects.filter (model_a_set__contains = модель)

0 голосов
/ 07 июня 2018

Вы можете вернуть Model_A объекты, отфильтрованные по user, и вернуть только их project_c значения.

Model_A.objects.filter(user_b__id=user_id).values_list('project_c')
0 голосов
/ 07 июня 2018

Если я правильно понимаю, вы хотите получить набор запросов, содержащий Project_C экземпляров, для которых user соответствующего Model_A является конкретным пользователем.

Мы можем запросить это с помощью:

Project_C.objects.filter(<b>model_a__user=someuser</b>)
...