Убедитесь, что метод reject
фактически сохраняет изменения, внесенные вами в объект Python, в базу данных как для столбца, так и для связанных ячеек, т. Е. column.save()
и cell.save()
. Затем, когда вы вызываете reject в столбце self.co3.reject()
, вам потребуется обновить объект Python ячейки, снова считав его из базы данных.
self.cl3.refresh_from_db()
self.assertEqual(
self.cl3.is_rejected,
True
)
Ваши распечатанные тесты в функции отклонения работают, потому что вы вызываете reject для объектов, а затем печатаете поля из этих же объектов.
У меня была та же проблема с только что, и я закончил тем, что реализовал алгоритм для сравнения модели со списком, таким образом, я только добавил/удалил элементы, которые изменились. Таким образом, если не было никаких значительных изменений список, не переходил к началу. И главным, которого я хотел достигнуть, была эффективность (так, чтобы список не мигал).
Посмотрите на ListView. Свойство TopItem. Это имеет индекс, который должен содержать его положение в списке. Найдите, что индекс в новом списке, и установил TopItem на тот объект, и он должен сделать прокрутку автоматически.
К сожалению, необходимо будет использовать некоторый interop для прокрутки к точной позиции в ListView. Используйте функцию GetScrollInfo winapi, чтобы заставить существующее положение прокрутки и SendMessage прокручивать к позиции.
Там в статье о CodeProject под названием Прокрутка группе с ListView, который мог бы вести Вас к решению.
Я просто хотел предоставить некоторую информацию для тех, кто отчаянно пытается использовать Buggy ListView.topitem свойство:
Конечно, это приведет к тому, что прокрутка прокрутки ListView переходит на 0 и обратно в расположение верхнего элемента, которое раздражает. Пожалуйста, обновите этот вопрос, если вы найдете обходной путь к этой проблеме.
У меня была сортировка- той же проблемы. У меня есть listView, который я заполняю каждые 1/2 секунды, и когда я устанавливаю TopItem на ListItem, чей индекс> видимых элементов, то список перескакивает между topItem и двумя задними точками.
Итак, чтобы исправить проблему, я установил TopIterm ПОСЛЕ вызова EndUpdate.
lvB.EndUpdate();
lvI.EndUpdate();
lvR.EndUpdate();
if (lstEntryInts.Items.Count > 0)
lstEntryInts.TopItem = lstEntryInts.Items[iTopVisIdx];
if (lstEntryBools.Items.Count > 0)
lstEntryBools.TopItem = lstEntryBools.Items[iTopVisIdx];
if (lstEntryReals.Items.Count > 0)
lstEntryReals.TopItem = lstEntryReals.Items[iTopVisIdx];