2017-09-20 4 views
1

Hier ist die Quelle: https://docs.djangoproject.com/en/1.8/topics/db/queries/Wie aktualisiert man ein Fremdschlüsselfeld in Django models.py?

Zu Beginn der am models.py Feld suchen, lassen Sie:

from django.db import models 

class Blog(models.Model): 
    name = models.CharField(max_length=100) 
    tagline = models.TextField() 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 

class Author(models.Model): 
    name = models.CharField(max_length=50) 
    email = models.EmailField() 

    def __str__(self):    # __unicode__ on Python 2 
     return self.name 

class Entry(models.Model): 
    blog = models.ForeignKey(Blog) 
    headline = models.CharField(max_length=255) 
    body_text = models.TextField() 
    pub_date = models.DateField() 
    mod_date = models.DateField() 
    authors = models.ManyToManyField(Author) 
    n_comments = models.IntegerField() 
    n_pingbacks = models.IntegerField() 
    rating = models.IntegerField() 

    def __str__(self):    # __unicode__ on Python 2 
     return self.headline 

Dies ist, wie eine Zeile oder ein Objekt von Blog Art erstellt:

Meine Frage ist, wie blog Spalte/Attribut des Entry-Objekts (das Foreign Key in Bezug auf Blog speichert) mit dem Eintrag, den ich in der Blog-Klasse erstellt habe, zu aktualisieren?

Antwort

0

Zuerst erhalten Sie das Blog Objekt und übergeben Sie es dann an Entry.

b=Blog.objects.get(name='Beatles Blog', tagline='All the latest Beatles news.') 

e=Entry(blog=b,headline='some headline',body_text='text here',....) 
e.save() 
+0

@Asif, Haben Sie versucht das ?? Hat es für dich funktioniert? Wenn irgendein Problem mich wissen lässt. –

+0

Nun, es war sicher. Vielen Dank! Wenn Sie Wirtschaft des Ausdrucks bevorzugen, können Sie folgende Zeile schreiben, die die Zeile erstellen und speichern wird: e = Entry.objects.create (blog = b, Überschrift = 'einige Überschrift', body_text = 'Text hier' ,. ...) – Asif

+0

@Asif, Sie können auch 'update_or_create' verwenden, wenn Sie nur neue Datensätze erstellen oder aktualisieren müssen. –

0

Sie können die Lösung von documentation verwenden. Oder kurze Antwort:

b = Blog.objects.get(pk=1) 
Entry.objects.filter(pk=17).update(blog=b) 
  1. Need auszuwählen Zeile/Zeilen, die Sie wollen Update
  2. Verwenden Sie die Funktion update
+0

Warum nehmen Sie 'pk = 1' und' pk = 17'. Ich denke nicht, dass dies der Person helfen wird zu verstehen, was er tun möchte. –

+0

@AstikAnand es ist nur ein Beispiel – AndMar

Verwandte Themen