Django 当前模型中的反向外键属性
这里有一个问题,我读了很多帖子后都无法解决。我有两个模型,其中一个通过外键链接到另一个,如下所示:Django 当前模型中的反向外键属性,django,django-models,foreign-keys,Django,Django Models,Foreign Keys,这里有一个问题,我读了很多帖子后都无法解决。我有两个模型,其中一个通过外键链接到另一个,如下所示: class Brewery(models.Model): name= models.CharField(max_length=100, null=False, blank=False) class Beer(models.Model): brewery = models.ForeignKey('Brewery', on_delete=models.SET_NULL, null=T
class Brewery(models.Model):
name= models.CharField(max_length=100, null=False, blank=False)
class Beer(models.Model):
brewery = models.ForeignKey('Brewery', on_delete=models.SET_NULL, null=True, blank=False)
name= models.CharField(max_length=100, null=False)
image = models.ImageField(upload_to='photos/', blank=True)
我想把啤酒的图片储存在一个包含相关啤酒厂名称的文件夹中。例如,假设我有以下内容:
酿酒厂:id=1,name=“约翰·马丁”
啤酒:id=1,brewery=1,name=“Dominus”
然后我想上传到“约翰·马丁/多米努斯”。可能吗
提前谢谢大家,
1418是的,您可以将可调用的消息传递给:
class啤酒(models.Model):
def上传图像路径(自身,文件名):
如果self.brewery\u id为无:
返回…
返回f'{self.brewery.name}/{self.name}/{filename}'
brewery=models.ForeignKey(
“酿酒厂”,
on_delete=models.SET_NULL,
空=真,
空白=假
)
name=models.CharField(最大长度=100,null=False)
image=models.ImageField(upload\u to=upload\u image\u path,blank=True)
但是,当
self.brewery
为None
时,您需要指定一个案例。在这种情况下,您不能使用self.brewery.name
,因为self.brewery
没有brewery
,是的,您可以将可调用的消息传递给:
class啤酒(models.Model):
def上传图像路径(自身,文件名):
如果self.brewery\u id为无:
返回…
返回f'{self.brewery.name}/{self.name}/{filename}'
brewery=models.ForeignKey(
“酿酒厂”,
on_delete=models.SET_NULL,
空=真,
空白=假
)
name=models.CharField(最大长度=100,null=False)
image=models.ImageField(upload\u to=upload\u image\u path,blank=True)
但是,当self.brewery
为None
时,您需要指定一个案例。在这种情况下,您不能使用self.brewery.name
,因为self.brewery
没有brewery
class Beer(models.Model):
def upload_image_path(self, filename):
if self.brewery_id is None:
return …
return f'{self.brewery.name}/{self.name}/{filename}'
brewery = models.ForeignKey(
'Brewery',
on_delete=models.SET_NULL,
null=True,
blank=False
)
name= models.CharField(max_length=100, null=False)
image = models.ImageField(upload_to=upload_image_path, blank=True)