Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何传递文件';django模型中的内容是否为CharField?_Django_Django Models - Fatal编程技术网

如何传递文件';django模型中的内容是否为CharField?

如何传递文件';django模型中的内容是否为CharField?,django,django-models,Django,Django Models,我有一个图标模型,它看起来像这样: class Icon(models.Model): name = models.CharField(max_length=50) icon = models.FileField(upload_to='icons/', blank=True, null=True) inline_svg = models.CharField(max_length=1000, blank=True) class Icon(models.Model):

我有一个图标模型,它看起来像这样:

class Icon(models.Model):
    name = models.CharField(max_length=50)
    icon = models.FileField(upload_to='icons/', blank=True, null=True)
    inline_svg = models.CharField(max_length=1000, blank=True)
class Icon(models.Model):
    def svg(self):
        f = open(self.icon.url)
        return f.read()
    name = models.CharField(max_length=50)
    icon = models.FileField(upload_to='icons/', blank=True, null=True)
    inline_svg = models.CharField(max_length=1000, default=svg())
大多数文件都是.svg,我想将其传递到相应文件的
inline_svg
内容中,以便在前端使用inline svg。我该怎么做?或者也许有更好的变体来满足我的需求

我也有这样的想法:

class Icon(models.Model):
    name = models.CharField(max_length=50)
    icon = models.FileField(upload_to='icons/', blank=True, null=True)
    inline_svg = models.CharField(max_length=1000, blank=True)
class Icon(models.Model):
    def svg(self):
        f = open(self.icon.url)
        return f.read()
    name = models.CharField(max_length=50)
    icon = models.FileField(upload_to='icons/', blank=True, null=True)
    inline_svg = models.CharField(max_length=1000, default=svg())

让我们看看我是否正确理解了你的问题。用户上传文件,当文件是svg时,您希望将其存储在
inline_svg

class Icon(models.Model):
    name = models.CharField(max_length=50)
    icon = models.FileField(upload_to='icons/', blank=True, null=True)
    inline_svg = models.CharField(max_length=1000, default='')

    def save(self, *args, **kwargs):
        if self.icon.name.endswith('.svg'):
            self.inline_svg = self.icon.read()
        super().save(*args, **kwargs)

没错。我猜你忘了“如果”的说法了。