Как хранить изображения, такие как Images API - PullRequest
2 голосов
/ 27 апреля 2020

Привет, моя модель для создания простого члена уже искала несколько мест, и до сих пор я не выяснил, как мне сохранить каталог моего изображения рядом с моим полем image .

class Member(models.Model):
with open(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))+'/api/data/states.json') as s:
    states_json = json.load(s)
    STATES = [(str(state["nome"]), str(state["sigla"])) for state in states_json]

name = models.CharField(max_length=100, null=True, blank=True, verbose_name='Nome')
image = models.ForeignKey(
    "wagtailimages.Image",
    blank=False,
    null=True,
    related_name="+",
    on_delete=models.SET_NULL,
    verbose_name='Imagem do membro',
)
role = models.CharField(max_length=35, null=True, blank=True, verbose_name='Cargo')
city = models.CharField(max_length=30, null=True, blank=True, verbose_name='Cidade')
state = models.CharField(
    verbose_name='Estado',
    max_length=19,
    choices=STATES,
    default=('SP'),
)
created = models.DateField(default=timezone.now, verbose_name='Atualizado')
modified = models.DateField(default=timezone.now, verbose_name='Modificado')

panels = [
    FieldPanel("name"),
    ImageChooserPanel("image"),
    FieldPanel("role"),
    FieldPanel("city"),
    FieldPanel("state"),
    FieldPanel("created"),
    FieldPanel("modified"),
]

def __str__(self):
    return self.name

class Meta:
    verbose_name = 'Membro'
    verbose_name_plural = 'Membros'  

Это работает нормально, но как хранить информацию об изображении, например Wagtail Images API?

Пример:

"detail_url": "http://localhost/api/v2/images/2/",
"download_url": "/media/original_images/l8GlI3V.jpg"

Это мой JSON из API

[ { "id": 6, "name": "Gabriel", "role": "Desenvolvedor", "image": 4, "city": "Itapetininga", "state": "São Paulo", "created": "2020-04-26", "modified": "2020-04-26" } ]

Спасибо за помощь !!!

1 Ответ

0 голосов
/ 27 апреля 2020

Это ссылка из документации, Wagtail имеет зависимость от DRF, Создайте желаемый сериализатор и представьте изображение в виде ссылки вместо ПК. Это должно быть просто (см. Документацию DRF). ).

Это видео на пользовательских сериализаторах также должно помочь.

...