Chyba najlepszy to właśnie ten który napisałeś, czyli przechowywanie w bazie tylko ścieżki do pliku znajdującego się gdzieś na serwerze. Jest to najlepsze rozwiązanie.
Druga opcja czyli przechowywanie zdjęć w bazie w postaci binarnej jest w mojej opinii po prostu głupie. No bo po co komplikować sobie życie. Nie dość że będzie to wolniejsze, to jeszcze trzeba martwić się implementacją tego.
Być może problem pojawi się kiedy mamy tych zdjęć dużo, ale nie wiem czy wiesz, że ścieżkę zapisu obrazu możemy uzależnić od zawartości naszego modelu. Aby to zrobić należy w naszym modelu dodać standardowe pole i jako ścieżkę `upload_to` możemy podać nazwę metody.
image = ImageField(upload_to=image_path)
Następnie tworzymy funkcję ( przed klasą z modelem ).
def image_path(instance, file_name):
return "path/to/load/image/" + file_name
Metoda ta powinna przyjmować dwa argumenty, pierwszy `instance` zawierający instancję naszego modelu i drugi `file_name` zawierający nazwę pliku. Na ich podstawie możemy wygenerować zcustomizowaną ścieżkę dla naszego zdjęcia.