2017-03-13 5 views
0

Ich habe zwei Modelle, einen Autor und einen Artikel. Jeder Artikel muss auf seinen Autor verweisen, damit ich auf seine Werte in meiner Vorlage zugreifen kann. Was ist der effizienteste Weg, dies zu tun?Django bekommen ein Modell von einem anderen Modell

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

Verwenden Djangos [Foreign Schlüssel] (https://docs.djangoproject.com/de/1.10/ref/models/fields/#django.db.models.ForeignKey) – Nrzonline

+2

'autor = models.ForeignKey (Autor, verbose_name = 'Autor')' –

+0

Bemerkenswert einfach, plus für fast sofortige Antworten. Ich werde die Antwort akzeptieren, wenn es mich in 48 Stunden lässt. – Anon

Antwort

0

Sie müssen das Foreign Key Konzept dafür verwenden. Das folgende ist seine Umsetzung:

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() 

Während es zu speichern, müssen Sie Folgendes tun Ihre views.py:

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

Hoffe, es hilft ...

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 
Verwandte Themen