A ordem da declaração é importante em models.py (Django / Python)?

Tenho algo parecido com isto em models.py

class ZipCode(models.Model):
    zip = models.CharField(max_length=20)
    cities = City.objects.filter(zip=self).distinct()

class City(models.Model):
    name = models.CharField(max_length=50)
    slug = models.CharField(max_length=50)
    state = models.ForeignKey(State)
    zip = models.ManyToManyField(ZipCode)

Quando faço isso, recebo:

NameError: name 'City' is not defined

Isso ocorre porque a ordem da declaração é importante? E se sim, como posso fazer isso, porque, de qualquer maneira, organizo isso, parece que vou receber um NameError.

Obrigado

questionAnswers(6)

yourAnswerToTheQuestion