2014-09-25 2 views
1

Я хотел бы автогенерировать словарь данных POST в форме изменения admin django, как если бы текущий объект не менялся. В основном имитируйте запрос POST, который произойдёт, если вы выполните GET на странице изменений от администратора, а затем нажмите «Сохранить». Это должно учитывать, какие поля доступны для редактирования в этой конкретной форме изменения, и также сможет обрабатывать InlineAdmins.Django autogenerate POST data dict для произвольной формы администратора

def auto_generate_changeform_data(object): 
     data = ??? 
     return data 

Например, в строке 302 из the django admin testcases они вручную создать словарь данных POST, но это то, что должно быть возможным осуществлять автоматическую генерацию, не так ли?

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

#some testcase 
    some_object = SomeModel.objects.get(...) 
    url = reverse("admin:appname_modelname_change", args=[some_object.id]) 
    data = auto_generate_changeform_data(some_object) 
    data['some_field'] = 'new value' #this is the only change I want to make 
    response = self.client.post(url, data) 

Я мог бы сделать все это в более-агрегатной у моды, используя методы в классе ModelAdmin вместо того, чтобы идти через запрос POST к клиенту, но я хочу, функциональный тестне блок тест в этом случае. Я действительно хочу симулировать полный POST для URL.

Как я могу получить этот словарь данных, особенно часть встроенных форм?

ответ

1

Я сделал это раньше, просто выполнив запрос GET с тестовым клиентом, а затем используя BeautifulSoup, чтобы очистить все элементы input и select.

Это не совсем понятно из-за разных способов представления этих элементов эти значения, но here - это код, который должен работать.

+0

безупречный! благодаря! – andy

Смежные вопросы