Django cannot import name x

Like madjar suggested, there is likely a circular import in your code. If you're having trouble finding out where the circle is (which modules and imports are involved), you can use the traceback option to get an idea of where the problem lies:

python manage.py validate --traceback

Edit - Validate is deprecated from django 1.7. So please run the following command -

python manage.py check --traceback

Try to import Locally your model instead of as public one, Example

def sample_function():
    from effects.models import Effect # import within function or class

or import model as String -> 'APP_NAME.MODEL_NAME'

pay_methods = models.ManyToManyField('payment_app.AllowedPayMethod')

There is a circular import in your code, that's why the Item can't be imported in action.

You can solve the problem by removing the import of a class in one of your files, and replacing it with a string containing the name of the class, as explained in the documentation. For example :

effects = models.ManyToManyField('effects.Effect',through='ItemEffect',blank=True)