首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中使用外键的属性

如何在Django中使用外键的属性
EN

Stack Overflow用户
提问于 2022-01-03 17:47:58
回答 1查看 347关注 0票数 1

与本例一样,我希望使用该类别派生目录路径。

代码语言:javascript
复制
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

某种形式的东西

代码语言:javascript
复制
photo = models.ImageField(upload_to='hwc/'+ category)

我尝试过用以下方法使用os.path,但没有成功

代码语言:javascript
复制
photo = models.ImageField(upload_to=os.path.join('hwc', category.category))
photo = models.ImageField(upload_to=os.path.join('hwc', category.__str__()))

这是行不通的,因为类别是一个外键,而我没有这样的属性。有其他的解决办法吗?

EN

回答 1

Stack Overflow用户

发布于 2022-01-03 18:28:36

ForeignKey是一个数据库键,用于将两个表连接在一起。这里我们可以说,category外键是通过引用模型Team_Type的主键将Team_TypeTeam_member模型连接在一起。

如果没有在Django中的表或模型类中显式定义主键,则Django将自动创建默认的Integer字段变量,并将其用作主键。请注意,Team_member中的外键引用了Team_Type中的主键。

在您的示例中,Team_Type模型类的主键是Django创建的Integer字段。您必须显式地提到,Team_Type模型中的哪个变量应该是主键,并由Team_member的外键引用。

您可以简单地修改代码,如下所示。

代码语言:javascript
复制
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字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70569596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档