与本例一样,我希望使用该类别派生目录路径。
class Team_Type(models.Model):
category = models.CharField(max_length=50)
def __str__(self):
return self.category
class Team_member(models.Model):
category = models.ForeignKey(Team_Type, on_delete=models.CASCADE)
name = models.CharField(max_length=40)
designation = models.CharField(max_length=50)
link = models.URLField(max_length=100)
photo = models.ImageField(upload_to='hwc')
def __str__(self):
return self.designation某种形式的东西
photo = models.ImageField(upload_to='hwc/'+ category)我尝试过用以下方法使用os.path,但没有成功
photo = models.ImageField(upload_to=os.path.join('hwc', category.category))
photo = models.ImageField(upload_to=os.path.join('hwc', category.__str__()))这是行不通的,因为类别是一个外键,而我没有这样的属性。有其他的解决办法吗?
发布于 2022-01-03 18:28:36
ForeignKey是一个数据库键,用于将两个表连接在一起。这里我们可以说,category外键是通过引用模型Team_Type的主键将Team_Type和Team_member模型连接在一起。
如果没有在Django中的表或模型类中显式定义主键,则Django将自动创建默认的Integer字段变量,并将其用作主键。请注意,Team_member中的外键引用了Team_Type中的主键。
在您的示例中,Team_Type模型类的主键是Django创建的Integer字段。您必须显式地提到,Team_Type模型中的哪个变量应该是主键,并由Team_member的外键引用。
您可以简单地修改代码,如下所示。
class Team_Type(models.Model):
category = models.CharField(max_length=50, primary_key=True)
def __str__(self):
return self.category现在Team_member中的外键将引用Team_Type模型的主键,即category字段。
https://stackoverflow.com/questions/70569596
复制相似问题