Size: a a a

Django [ru] #STAY HOME

2019 December 29

AG

Artem Gubatenko in Django [ru] #STAY HOME
Александр Виноградов
В моём случаи, поле со списком group содержит объект класса CategoriesGroups. Но в текущий момент, список содержит весь перечень групп, а надо только те группы, у которых  service.id совпадают. Вот и думаю, что бы качестве поля указать не 'group', а функцию, которая должна вернуть что то типа obj.objects.filter(sirvice_id = id)
тогда эту функцию нужно создавать вне модели ии через метод, на который кидали ссылку выше, присваивать результат ее работы

Я встречал мнение что использование этого метода считается не лучшей практикой, поэтому предпочитаю создавать джанго-формы (ModelForm).

В форме не нужно определять все поля, за тебя это сделает класс админки модели (из нее возьмутся настройки),
только в *Meta* поставь model & fields (обычно ставлю '__all__' хоть это и не рекомендуется, но это же для админки)

нужно только изменить нужное тебе поле
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Artem Gubatenko
тогда эту функцию нужно создавать вне модели ии через метод, на который кидали ссылку выше, присваивать результат ее работы

Я встречал мнение что использование этого метода считается не лучшей практикой, поэтому предпочитаю создавать джанго-формы (ModelForm).

В форме не нужно определять все поля, за тебя это сделает класс админки модели (из нее возьмутся настройки),
только в *Meta* поставь model & fields (обычно ставлю '__all__' хоть это и не рекомендуется, но это же для админки)

нужно только изменить нужное тебе поле
* не вне "модели", а вне класса админки
сорри, описался
источник
2019 December 30

АВ

Александр Виноградов in Django [ru] #STAY HOME
Как правильно в качестве параметра поля модели задать функцию?
group = models.ForeignKey(CategoriesGroups, on_delete=models.CASCADE,
                             limit_choices_to={'service_id': get_service_id}
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
т.е. get_service_id это функция возвращающая id
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
брал в кавычки, но всё равно ошибка
источник

ОС

Олег Сергеев in Django [ru] #STAY HOME
Александр Виноградов
т.е. get_service_id это функция возвращающая id
Может надо результат функции положить, а не функцию?
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
Олег Сергеев
Может надо результат функции положить, а не функцию?
без разницы, как это сделать, если функция определяется ниже?
источник

ОС

Олег Сергеев in Django [ru] #STAY HOME
Александр Виноградов
без разницы, как это сделать, если функция определяется ниже?
Разница есть.
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
Олег Сергеев
Разница есть.
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
как в поле group получить результат get_service_id?
источник

ॐХ

ॐ Хмурый Монах in Django [ru] #STAY HOME
Александр Виноградов
как в поле group получить результат get_service_id?
self.get_service_id()
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
ॐ Хмурый Монах
self.get_service_id()
с self не прокатит)
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
во во, уже пробовал
источник

ॐХ

ॐ Хмурый Монах in Django [ru] #STAY HOME
значит вынести функцию из класса
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
может другой есть способ получить текщий service_id?
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
на этапе определения полей, поле service это
(Pdb) service
<django.db.models.fields.related.ForeignKey>

но добраться до id не получилось
источник

Н

Никита in Django [ru] #STAY HOME
Александр Виноградов
как в поле group получить результат get_service_id?
@property
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Александр Виноградов
может другой есть способ получить текщий service_id?
все таки почему не хочешь сделать форму?

там есть self.instance из которого легко возьмешь service_id и отфильтруешь queryset
источник

АВ

Александр Виноградов in Django [ru] #STAY HOME
Artem Gubatenko
все таки почему не хочешь сделать форму?

там есть self.instance из которого легко возьмешь service_id и отфильтруешь queryset
это мне сложно. Нашёл простой путь через limit_choices_to, но надо получить id
источник

AG

Artem Gubatenko in Django [ru] #STAY HOME
Никита
@property
интересно, это как можно провернуть без обращения к self?
источник