Как отфильтровать родительское поле дочернего объекта для Django

#python #django

Вопрос:

Я хочу иметь форму с полями, которые фильтруются на основе поля имени модели группы Django. Например, у меня есть модель, которая подключена к пользовательской модели Django, которая подключена к модели Django group примерно так:

 class customUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.user.first_name
 

Я добавил ряд данных в группу Django с помощью административной панели Django под названием «Учитель».
Я пытаюсь сделать так, чтобы в моем списке форм был только пользователь, указанный как «Учитель» в групповой модели Django.

Моя форма:

 class myForm(ModelForm):

  class Meta:
    model = customUser
    fields = ['user ']

  def __init__(self,*args,**kwargs):
        super (myForm,self ).__init__(*args,**kwargs)
        **# What I want to achieve but doesnt work.**
        self.fields['user'].queryset = customUser.objects.filter(user.group.name = "Teacher") 

 

Мы будем очень признательны за любую помощь.

Ответ №1:

Попробуй:

 customUser.objects.filter(user__groups__name='Teacher')
 

Проверьте документацию по справочнику поиска

Комментарии:

1. @adqwqx. Было ли у вас достаточно времени, чтобы протестировать решение? Это то, чего ты ожидаешь?

2. @adqwqx. Не забудьте принять ответ, если это соответствует вашим потребностям. Это важно для пользователей, у которых есть аналогичная проблема, и для пользователей, которые отвечают на вопросы. Как работает принятие ответа?