I recently wrote a Device for my OATH Toolkit bindings for Python project, and when I run the example Django project (examples/django), the device dropdown when you verify a token contains the device twice. I traced the behavior to django_otp.device_classes. For some reason, both the django_otp and oath_toolkit.django_otp apps contain my models. This changeset makes sure there are no duplicates in the returned generator by checking against a set.
If the name of your app is 'django_otp', then this might be a minor symptom of a much deeper problem. Does it go away if you give the app a unique name? I'm not really sure what Django's expected behavior is for app name collisions.