Django Model Definition Race

¿Cómo lidiar con el caso en el que tiene un modelo (A) que se basa en el modelo (B) que se está definiendo, pero el modelo (B) también se basa en el modelo (A) que se está definiendo?

Por ejemplo, tengo

class event(models.Model):
    competition_start = models.DateField() 
    competitors = models.ManyToManyField(picture)
    results = models.CommaSeparatedIntegerField(max_length=20)

class picture(models.Model):
    uploader = models.OneToOneField(UserProfile)
    upload_date = models.DateField()
    image = models.ImageField(upload_to="media")
    score = models.DecimalField(max_digits=10,decimal_places=10)
    score_RD = models.DecimalField(max_digits=10,decimal_places=10)
    rated = models.BooleanField()
    last_competed = models.DateField() 
    competition = models.OneToOneField(event) 

El campo de la competencia se basa en la imagen que se está definiendo, pero la imagen se basa en el evento que se está definiendo.

Tenga en cuenta que cada imagen (A) comparte una relación de uno a uno con un evento, pero el evento puede involucrar varias otras imágenes (conjunto (S) -A).

Traté de cambiar a poner

competitors = models.ManyToManyField(picture) 
user_pic = models.OneToOneField(picture)

dentro del evento y deshacerse del campo 'competencia', pero creo que SQL no lo permite. ¿Alguien puede explicar por qué?

¿Qué solución debo realizar si necesito una relación OneToOne para un campo y una relación ManyToMany con otro? (entre las dos mismas clases)

Gracias :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta