我有一个Django应用程序与Tastypie,主要是BackBone客户端。我的一个模型有几个ImageField。这里有一个类似的设置来帮助我解释这个问题。Django Tastypie阻止文件uri被保存到FileField
settings.py
MEDIA_URL = "/media/"
models.py
class Foo(models.model):
bar = models.ImageField()
baz = models.CharField()
api.py
class FooResource(ModelResource):
class Meta:
queryset=models.Foo.objects.all()
resource_name = "foo"
authorization = Authorization()
当我做一个GET请求该API会将MEDIA_URL附加到文件名以返回可以访问条的URI。但是,当我在一行上更改baz的值,然后使用该值进行PUT请求时,它也会将条的值更改为URI。这意味着我下一次获取行时,它会再次附加MEDIA_URL,破坏系统并为每个连续的GET和PUT添加它。我最终得到了数据库中bar的值。
/media/media/media/bar.jpg
我想我应该在我的ModelResource覆盖的方法解决这个问题,所以,当有一个PUT请求,它承认它变得既URI或一个真正的文件,并改变以某种方式其行为。
这是正确的修复方法吗?你能否提供一些修复的实施细节?