Django-modelos: campo de uso de clave externa

Estoy trabajando en un proyecto de galería de imágenes en DJango, por el simple hecho de hacerlo. Y bueno, tengo una clase llamada Gallery y una clase llamada ImageGallery .

La clase llamada galería se vería así:

 class Gallery(models.Model): gallery = models.ForeignKey(Gallery, related_name="parent_gallery") title = models.CharField(max_length=200) folder = models.CharField(max_length=200) # ex: images/galleries/slugify(self.title) class ImageGallery(models.Model): gallery = models.ForeignKey(Gallery, related_name="parent_gallery") title = models.CharField(max_length=200) image = models.ImageField(upload_to=self.gallery.folder) 

Bueno, la última línea de código es lo que quiero saber si es posible o cualquier otro reemplazo fino para él.

En DJango-admin quiero poder agregar registros para la mesa ImageGallery y al seleccionar la Gallery me gustaría usar, las imágenes se guardarán en la carpeta especificada en el campo gallery.folder .

¿Cuál es la mejor manera de solucionar esto? No he terminado de escribir las dos clases, pero dudo que vayan a funcionar así. Gracias de antemano. 🙂

    El FileField.upload_to se define como sigue

    Este atributo proporciona una forma de configurar el directorio de carga y el nombre del archivo, y se puede configurar de dos maneras. En ambos casos, el valor se pasa al método Storage.save (). … upload_to también puede ser invocable, como una función. Se llamará para obtener la ruta de carga, incluido el nombre de archivo. Este llamable debe aceptar dos argumentos y devolver una ruta de estilo Unix (con barras diagonales hacia delante) para que se pase al sistema de almacenamiento. Los dos argumentos son:

    Pero self.gallery.folder no es una llamada. Lo que necesita es configurar una función según las líneas dadas en ese ejemplo

     def get_upload_path(instance, filename): return '{0}/{1}'.format(instance.gallery.folder, filename) 

    Y tu modelo cambiará a

     image = models.ImageField(upload_to=get_upload_path)