Django模型引用来自不同的模型

时间:2016-05-10 00:36:01

标签: python django django-models

我在模型中编写方法,我需要从另一个模型访问一个属性。

from django.db import models

class Image(models.Model):
    name = models.CharField(max_length=30)
    image = models.ImageField(upload_to = slug_path)


    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

    def slug_path(self):
        # Need Article.slug from Article class here for constructing path
        pass

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
    slug     = models.SlugField(max_length=50)

    def __str__(self):              
        return self.headline

我想在Image类中编写一个方法,该方法可以通过一对多关系访问它所包含的文章的段落。这是可能的,还是有不同的方式我应该完全解决这个问题?

2 个答案:

答案 0 :(得分:1)

假设只有一个图像可以与一篇文章相关,您需要在图像模型中添加一个字段文章,该文章将是文章模型的外键

article = models.ForeignKey(Article)

现在,

def slug_path(self):
        slug = self.article.slug
        return slug

无论如何,你可以以类似的方式为许多领域等做到这一点。

答案 1 :(得分:0)

添加与Article对象对应的Image的关系,就像使用Article and Reporter一样。

article = models.ForeignKey(Article, on_delete=models.CASCADE)

然后获得/返回slu ::

def slug_path(self):
    return self.article.slug