Ich habe ein Projekt, das 3 Apps hat, ein benannt speichert mit Store-Modelle, Produkte mit Produktmodellen, und API ist die Rest Framework App, die die JSON-Ergebnisse für Kunden dient . Ich habe den Media-Root in settings.py als MEDIA_ROOT = '/photos/'
festgelegt und der Upload funktioniert sowohl für Produkt- als auch für Geschäftsmodelle. Das Hauptproblem hierbei ist, dass das Rest-Framework aus irgendeinem Grund eine URL zurückgibt, die auf die API-App verweist, anstatt auf die Produkte, oder Apps für die Medienstamm-URL speichert. hier sind meine ModelleDjango Rest App verwendet Medienstamm nicht korrekt, um Bilder zu liefern
class Product(models.Model):
def get_image_path(instance, filename):
return '/Products/' + filename
picture = models.ImageField(width_field=None, max_length=100, blank =True, null =True)
store:
class Store(models.Model):
def __str__(self):
return self.name
def get_image_path(instance, filename):
return os.path.join('productphotos', 'stores', filename)
picture = models.ImageField(width_field=None, max_length=100, blank =True, null =True)
Wie ich das mediaroot in das Projektverzeichnis festgelegt haben, statt, so dass alle Anwendungen im Projekt als mediaroot selbst statt verweisen?
Der Upload funktioniert und uploads die Bilder zu den angewiesenen Verzeichnissen im Stamm des Projekts (wo manage.py gefunden wird), aber das Rest-Framework denkt, dass es die Medien aus der API-App bekommen sollte. Was ist der richtige Weg das zu tun? hier sind Screenshots:
Sie nicht genug Informationen hier vorsah. Was ist die erwartete URL - eine Zeichenkette, was gibt das Django REST Framework zurück? Wieso ist einer deiner Upload_to absolut? – Linovia
Ich habe es bearbeitet, um weitere Informationen zur Verfügung zu stellen, der aktuelle Weg brachte einen Fehler beim Hochladen (Ich habe vergessen, nach dem Ändern zu testen) Also habe ich es gerade zurück zu seinem vorherigen Verhalten bearbeitet (loswerden der Methode get_image_path) –
Es gibt immer noch einige Inkonsistenzen. Der Bildpfad in dem Bild unterscheidet sich von dem "MEDIA_ROOT" in den Einstellungen. Sind Sie sicher, dass Ihre 'MEDIA_ROOT' Einstellungen absolut sind? – Linovia