Есть 2 таблицы: ЗВОНКИ и АБОНЕНТЫ. Во второй указывается id_абонента, его ФИО и номер телефона, а в первой, id_звонка, id_абонента (т.е. нужно выбрать), номер телефона абонента (нужно выбрать, но нужно как-то отфильтровать, чтобы выбор был возможен лишь если id_абонента в таблице ЗВОНКИ совпадал с id_абонента в таблице АБОНЕНТЫ). Вот как у меня работает добавление таблицы сейчас:
def addTable(i):
if i == 1:
TableName = "Callers";
ColNames = ["ФИО", "Номер телефона"];
ColWidth = [300, 300];
elif i == 2:
TableName = "Calls";
ColNames = ["Абонент", "Номер абонента"];
ColWidth = [300, 300];
global stm;
stm = QtSql.QSqlRelationalTableModel(parent = window);
tv.setModel(stm);
stm.setTable(TableName);
stm.setSort(1, QtCore.Qt.AscendingOrder);
if i == 2
stm.setRelation(1, QtSql.QSqlRelation("Callers", "CallersID", "FullName"));
stm.setRelation(2, QtSql.QSqlRelation("Callers", "CallersID", "CallerPhone"));#Где CallersID поле id_абонента, FullName - ФИО абонента, а CallerPhone - телефон абонента.
stm.select();
k = 0;
for ColName in ColNames:
k = k + 1;
stm.setHeaderData(k, QtCore.Qt.Horizontal, ColName);
if TableName == "Calls":
tv.setItemDelegateForColumn(1, QtSql.QSqlRelationalDelegate(tv));
tv.setItemDelegateForColumn(2, QtSql.QSqlRelationalDelegate(tv));
tv.hideColumn(0);
k = 0;
for ColW in ColWidth:
k = k + 1;
tv.setColumnWidth(k, ColW);
if TableName != "Calls":
btnDel.setEnabled(False);
else:
btnDel.setEnabled(True);
btnAdd.setEnabled(True);
В таком случае, при добавлении таблицы я смогу выбрать любой номер телефона из списка, а мне нужно, как я сказал выше, чтобы показывались лишь номера абонента. Возможно ли сделать такой фильтр и как?