Limit_choices_to через Q - PullRequest
       7

Limit_choices_to через Q

1 голос
/ 06 мая 2019

Я пытаюсь получить список данных из моего поля, связанного с внешним ключом, но оно не работает с limit_choices_to

моя модель

def limit_choices_segment():
    return Q(role=Place.CITY) & Q(role=Place.VILLAGE) & Q(role=Place.TOWN)


class Segment(CoreModel):
    start_point = models.ForeignKey(Place, on_delete=models.CASCADE, limit_choices_to=limit_choices_segment,
                                    related_name='departing_point')
    end_point = models.ForeignKey(Place, on_delete=models.CASCADE, limit_choices_to=limit_choices_segment,
                                  related_name='arriving_point')
    routes = models.ForeignKey(Routes, on_delete=models.CASCADE)

    def __str__(self):
        return '{}-{}'.format(self.start_point, self.end_point)

когда я пробовал это только с одним Q (role = Place.CITY) или другим, он прекрасно работает

1 Ответ

1 голос
/ 06 мая 2019

Вы хотите вместо этого сделать

def limit_choices_segment():
    return Q(role=Place.CITY)  Q(role=Place.VILLAGE) | Q(role=Place.TOWN)

?Это может не работать, потому что вы используете & для трех разных ролей, которые фильтруют их все.

...