Importa el orden de la declaración en models.py (Django / Python)?

Tengo algo como esto en 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)

Cuando hago esto obtengo:

NameError: name 'City' is not defined

¿Es esto porque el orden de la declaración es importante? Y si es así, ¿cómo puedo hacer esto? Porque de cualquier forma que organice esto, parece que voy a obtener un NameError.

Gracias

Respuestas a la pregunta(6)

Su respuesta a la pregunta