【问题标题】:Django GET API for image field from different model来自不同模型的图像字段的 Django GET API
【发布时间】:2019-12-02 21:59:28
【问题描述】:

我正在尝试从某个模型获取图像 url。我做了2个模型: 餐厅型号:

class Restaurant(models.Model):
    from location.models import Area
    from business.models import Business

    name = models.CharField(verbose_name=_('Name'), max_length=255, unique=True)
    address = models.CharField(verbose_name=_("Address"), max_length=255)
    phone = models.CharField(verbose_name=_('Phone Number'), max_length=255)
    email = models.EmailField(verbose_name=_('Email'), max_length=255, blank=True, null=True)
    website = models.URLField(verbose_name=_('Website / Online Listing Link'), max_length=255, blank=True, null=True)
    is_active = models.BooleanField(verbose_name=_("Is Active?"), default=True)
    is_veg = models.BooleanField(verbose_name=_('Is Veg?'), default=True)

class Meta:
    verbose_name = 'Restaurant'
    verbose_name_plural = 'Restaurants'

和餐厅形象模型:

class RestaurantImage(models.Model):
    image_type = models.CharField(verbose_name=_('Image Type'), choices=IMAGE_TYPES, max_length=255, default=RESTAURANT)
    restaurant = models.ForeignKey(verbose_name=_('Restaurant'), on_delete=models.PROTECT, to=Restaurant)
    image = models.ImageField(verbose_name=_('Select Image'), upload_to='media/')

    def __str__(self):
        return self.restaurant.name + " - " + IMAGE_TYPES_DICT[self.image_type]

    class Meta:
        verbose_name = 'Restaurant Image'
        verbose_name_plural = 'Restaurant Images'

我需要获取餐厅的图片,所以我尝试通过属性方法获取图片,但是得到了UnicodeDecodeError。

@property
def images(self):
    images = []
    for i in RestaurantImage.objects.filter(restaurant=self.id):
        images.append(i.image)

    return images

请帮我获取图片网址。谢谢。

【问题讨论】:

标签: django api django-models django-rest-framework get


【解决方案1】:

所以,我找到了解决方案。它现在可以工作,但我仍然想探索一种更好的获取图像的方法。

@property
def images(self):
    import sys
    images = []

    for i in RestaurantImage.objects.filter(restaurant=self.id):
        file = 'http://' + sys.argv[-1] + '/'
        image_path = i.image.file.name
        file += image_path[image_path.find('images/'):]
        images.append(file)

    return images

我基本上生成了图片的路径。

【讨论】:

    猜你喜欢
    • 2022-01-19
    • 2013-04-13
    • 2022-01-18
    • 2015-03-14
    • 2018-02-13
    • 2022-01-24
    • 1970-01-01
    • 2011-03-25
    • 2017-06-23
    相关资源
    最近更新 更多