Помогите убрать дублирование

goshaa

Новичок
Пользователь
Сен 4, 2023
2
0
1
Код:
  def get_f(self, obj):
        return (self.context.get('request').user.is_authenticated
                and F.objects.filter(
                    user=self.context.get('request').user,
                    r=obj).exists()
                )

    def get_s(self, obj):
        return (self.context.get('request').user.is_authenticated
                and S.objects.filter(
                    user=self.context.get('request').user,
                    r=obj).exists()
                )

Необходимо объединить две идентичные функции, отличие только в названиях моделей. Пытался объединить через общий метод, но видимо, где-то допускаю ошибку. Спасибо!
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Python:
def get_model(self, obj, model):
        return (self.context.get('request').user.is_authenticated
                and model.objects.filter(
                    user=self.context.get('request').user,
                    r=obj).exists()
                )
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Большое спасибо! Я правильно понимаю, что к model я уже и добавляю нужные для проверок модели:
Код:
def get_model(self, obj, model):
        return (self.context.get('request').user.is_authenticated
                and model(F, S).objects.filter(
                    user=self.context.get('request').user,
                    r=obj).exists()
                )

Выходит ошибка:
return method(value)
TypeError: get_in_f_and_s() missing 1 required positional argument: 'model'
нет, при вызове функции добавляйте параметр, имя своей модели, то есть get_model(..., S) и get_model(..., F)
в ошибке это и сказано собственно...
 
  • Мне нравится
Реакции: goshaa

goshaa

Новичок
Пользователь
Сен 4, 2023
2
0
1
Python:
def get_model(self, obj, model):
        return (self.context.get('request').user.is_authenticated
                and model.objects.filter(
                    user=self.context.get('request').user,
                    r=obj).exists()
                )
Большое спасибо! Я правильно понимаю, что к model я уже и добавляю нужные для проверок модели:
Код:
def get_model(self, obj, model):
        return (self.context.get('request').user.is_authenticated
                and model(F, S).objects.filter(
                    user=self.context.get('request').user,
                    r=obj).exists()
                )

Выходит ошибка:
return method(value)
TypeError: get_in_f_and_s() missing 1 required positional argument: 'model'
 

Форум IT Специалистов