sal*_*999 0 python database django foreign-keys
我正在尝试使用上传图像 models.ImageField(upload_to=upload_location)
def upload_location(instance,filename):
print("%s/%s"%(instance.id,filename))
return "%s/%s" %(instance.id,filename)
Run Code Online (Sandbox Code Playgroud)
但它给出了"GET /media/None/image_qacfEsv.jpg HTTP/1.1"
我尝试使用 slug 字段它工作正常但既不工作id也不pk工作我想使用 obj ID 来命名图像的文件夹,但它none在 id 属性中给出的是我的文件
def upload_location(instance,filename):
print("%s/%s"%(instance.id,filename))
return "%s/%s"%(instance.id,filename)
class Post(models.Model):
draft = models.BooleanField(default=False)
publish = models.DateField(auto_now=False,auto_now_add=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL,default=1)
slug = models.SlugField(unique=True)
title = models.CharField(max_length=120)
image = models.ImageField(upload_to=upload_location,
null=True,blank=True,
width_field="width_field",
height_field="height_field")
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
content = models.TextField()
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
您无法pk在保存对象之前获得- 事实上,检查对象是否有 apk是检查它是否已保存的好方法。
因此,我建议在您的模型上添加一个 UUID 字段。就像是:
import uuid
class Post(models.Model):
uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
...
Run Code Online (Sandbox Code Playgroud)
uuid 字段将是唯一的,并且在您创建对象时可用,因此您可以在上传路径中使用它。