Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как предать имя таблицы в качестве параметра во view? / 5 сообщений из 5, страница 1 из 1
17.12.2021, 06:40
    #40120891
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предать имя таблицы в качестве параметра во view?
Добрый день! Есть несколько одинаковых таблиц-справочников с одинаковой структурой. Хотелось сделать одну общую страницу для создания, редактирования, удаления записей, только передавать разные имена таблиц. Вот попробовал:
urls:
Код: python
1.
path('Create/<TableName>',Create,name='Create')


а вот view:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
def Create(request,TableName):
    if TableName=='Unit':
        title='Единицы измерения'
    data=TableName.objects.all()
    FormName=TableName+'Form'
    if request.method =='POST':
      form=FormName(request.POST)
      if form.is_valid():
        try:
           form.save()
           return redirect('Create')
        except:
           form.add_error(None,'Ошибка добавления ')
    else:
        form=FormName()
    return render(request,'trade/Create.html',{'title':'title','form':form,'data':data})



Естественно, получаю ошибку:
AttributeError at /Create/Unit
'str' object has no attribute 'objects'

Понятно, параметр строка, таблица - объект... А как можно сделать, передать именно имя объекта? Спасибо!
...
Рейтинг: 0 / 0
17.12.2021, 10:11
    #40120922
estic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предать имя таблицы в качестве параметра во view?
Jimy
Хотелось сделать одну общую страницу
Страницы все же будут разные, обработчики одинаковые.

Jimy
А как можно сделать, передать именно имя объекта?
При перенаправлении? Передавайте в адресе. Получится переход на форму редактирования.

И раз хотите обобщить для нескольких таблиц, лучше вообще убрать имена/title таблиц из кода. Посмотрите на эту модель данных: https://gency.ru/simple-data-model (суть в том, чтобы хранить описатели таблиц объектов в специальной "корневой" таблице).
...
Рейтинг: 0 / 0
17.12.2021, 10:25
    #40120932
estic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предать имя таблицы в качестве параметра во view?
В "корневой" таблице могут храниться не только описатели таблиц объектов, но и обычные объекты. Например, посмотрите дамп из первого архива здесь: https://gency.ru/creating-simple-blog-template - там вообще нет описателей таблиц, однако чтобы управлять объектами, например статьями, такой описатель нужно добавить.
...
Рейтинг: 0 / 0
17.12.2021, 11:26
    #40120959
Jimy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предать имя таблицы в качестве параметра во view?
Понял,спасибо
...
Рейтинг: 0 / 0
21.12.2021, 15:42
    #40121943
iot
iot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как предать имя таблицы в качестве параметра во view?
Jimy,

добрый день. ваш вопрос наверное более корректный "как создать инстанс модели из названия"
есть ответ здесь
в вашем случае будет примерно так
Код: python
1.
2.
3.
klass = globals()[TableName]
instance = klass()
data=instance.objects.all()
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как предать имя таблицы в качестве параметра во view? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]