问题
After upgrading to a more recent Django version, I started getting this deprecation warning:
Django version 1.3, using settings 'demos.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
/Users/.....myfile.py:328: DeprecationWarning: inner has been called without providing a connection argument.
if 'integer' in x.db_type()
I realized it's caused by the Field.db_type method, which returns the database column data type for a Field. This method has been modified so to comply with the multi-database feature of recent versions of Django, so now it also requires a connection object as argument [check the django docs]
But how to pass that connection object? I don't get it..
回答1:
... I found a solution that works. It's enough to import the connection from django.db, and pass that as an argument:
from django.db import connection
if 'integer' in x.db_type(connection=connection):
# do something...
Still wonder whether it's the right way of doing it though....
来源:https://stackoverflow.com/questions/8035078/how-to-fix-djangos-db-type-deprecation-warning