2014-02-17 6 views
0

Goodmorning, У меня есть БД с тремя столами:web2py - программно вставить на один-ко-многим дб

db.define_table('person', 
      Field('name', length=100), 
      Field('dob', length=10), 
      Field('address', 'text', length=255), 
      Field('countryname', length=3), 
      Field('statename', length=100), 
      ) 

db.define_table('opslist', 
      Field('opid', length=10), 
      Field('dop', length=10), 
      Field('type_operation', length=25), 
      ) 

db.define_table('cardlist', 
      Field('opid', db.opslist), 
      Field('name', db.person), 
      Field('countryname', length=3, required=True), 
      Field('statename', length=100, required=True), 
      Field('zip', length=5, required=False), 
      ) 

Я хотел бы вставить в коде, значит, не используя sqlform или форму, некоторые данные в ... например: Если у меня есть все значения, вносимые в таблицу карточных карт, операция должна дать мне возможность автоматически добавить связанную запись (создание новой, если нет) в другие таблицы. Это потому, что это реляционный db с внешними ключами ...

Возможно ли это с помощью web2py с использованием DAL? или мне нужно написать мою сырую команду sql?

Спасибо Все

+0

Ты говоришь, что есть данные для человека, в opslist и связанной записи cardlist, но вы не не знаю, существуют ли записи человека и opslist (чтобы их можно было создать или нет), прежде чем вставлять запись в карточный список)? Предполагая, что у вас есть данные о человеке и opslist, откуда вы знаете, что их можно использовать для идентификации единственной уникальной записи в каждой таблице (определения модели вашего лица и оп-списка не содержат никаких уникальных ограничений)? Без гарантии уникальной записи нет способа узнать, какой идентификатор нужно ввести в поле ссылки в списке карт. – Anthony

+0

Привет, Энтони, извините, но я верю, что я не смог ничего объяснить. Я бы поместил новую информацию: person (имя и т. Д. Для таблицы person), событие операции (таблица опций) и countryname, statename zip для таблицы карт. В этом случае, каким образом я могу поместить эту информацию в db? без использования sqlform или формы? например: db.cardlist.insert (name = , opid = , countryname = , state = , zip = <12345>) – user3319321

ответ

1

Просто используйте метод insert. Она возвращает идентификатор вновь созданной записи, которую вы можете использовать для вставки в ссылочных полей:

person = db.person.insert(name=..., dob=..., ...) 
opslist = db.opslist.insert(opid=..., dop=..., ...) 
db.cardlist.insert(opid=opslist, name=person, ...)