2016-05-10 5 views
1

Я пишу метод в модели, и мне нужно получить доступ к атрибуту из другой модели.Ссылки на модель Django от другой модели

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, который будет иметь доступ к сгустку данной статьи она входит в через один ко многим отношений. Возможно ли это или есть другой способ, которым я должен заниматься этим полностью?

+0

Сначала вы должны создать связь между '' Image' и Article', как вы сделали для '' Article' и Reporter'. –

ответ

1

Скажем, если только одно изображение может быть связано с одной статьи, вам необходимо добавить статью поля в имиджевой модели, которая была бы внешним ключом к статье модели

article = models.ForeignKey(Article) 

Теперь,

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

В любом случае, вы можете сделать это аналогичным образом для многих и многих полей и т. Д.

+0

Это сработало отлично, спасибо! – Jamison

0

Добавить отношение к изображению, соответствующему объекту Article, как вы это делали со статьей и репортером.

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

Затем, чтобы получить/вернуть Slug:

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