2017-03-13 12 views
0

私には2つのモデル、AuthorとArticleがあります。それぞれの記事は私のテンプレートでその値にアクセスできるように、著者に戻って参照する必要があります。これを行う最も効率的な方法は何ですか?Djangoは別のモデルからモデルを取得しています

class Author(models.Model): 
    name = models.CharField(max_length=256) 
    picture = models.CharField(max_length=256) 

class Article(models.Model): 
    title = models.CharField(max_length=256) 
    author = #The Author model that wrote this article 
    date = models.DateTimeField(default=datetime.now) 
    body = models.TextField() 
+1

使用Djangoの[外国人...それがお役に立てば幸いですキー](https://docs.djangoproject.com/en/1.10/ref/models/fields/#django.db.models.ForeignKey) – Nrzonline

+2

'author = models.ForeignKey(作成者、verbose_name = '著者')' –

+0

驚くほどシンプルで、すぐ近くの返信にはプラス。私は48時間後にそれを受け入れるでしょう。 – Anon

答えて

0

Foreign Keyコンセプトを使用する必要があります。以下はその実装である:

class Author(models.Model): 
    name = models.CharField(max_length=256) 
    picture = models.CharField(max_length=256) 

class Article(models.Model): 
    title = models.CharField(max_length=256) 
    author = models.ForeignKey(Author) 
    date = models.DateTimeField(default=datetime.now) 
    body = models.TextField() 

それを保存している間、あなたはあなたのviews.pyで次の手順を実行する必要があります。

if form.is_valid(): 
    author = Author.objects.get(name="author name") 
    form.save(author=author) 

0
class Author(models.Model): 
    name = models.CharField(max_length=256) 
    picture = models.CharField(max_length=256) 

class Article(models.Model): 
    title = models.CharField(max_length=256) 
    author = models.ForeignKey(Author, on_delete=models.CASCADE) 
    date = models.DateTimeField(default=datetime.now) 
    body = models.TextField() 

>>> r1 = Author(name='John',picture='johnpicture') 
>>> r1.save() 

>>> r2 = Author(name='John',picture='paulpicture') 
>>> r2.save() 


>>> from datetime import date 
>>> a = Article(title="Article1", body="This is a test",date=date(2017, 7, 27), author=r1) 
>>> a.save() 
>>> a.reporter 
関連する問題