2017-11-08 3 views
0

Modell:Erstellen neue Modellinstanz mit 00.59 und Fremdschlüsselfeld

class BurrowedBook(models.Model): 
    # Fields 
    borrow_date = models.DateField() 
    return_date = models.DateField() 
    actual_return_date = models.DateField(null=True) 

    # Relationship Fields 
    book_copy = models.OneToOneField(BookCopy) 
    burrowed_by = models.ForeignKey(Member) 

Speicher neue Instanz:

member = Member.objects.filter(member_id=memberId) 
book_copy = BookCopy.objects.filter(book=book, copy_number=book_copy_id) 

BurrowedBook.objects.create(borrow_date=borrow_date, 
           return_date=return_date, 
           book_copy=book_copy, burrowed_by=member) 

Wie kann ich eine neue Instanz dieses Modells speichern? Ich habe Probleme mit eins zu eins Feld und Fremdschlüsselfeld.

Ich erhalte diese Fehlermeldung:

Cannot assign "<QuerySet []>": "BurrowedBook.book_copy" must be a 
"BookCopy" instance. 
+0

Sie brauchen mehr Kontext zu zeigen. Was ist 'book_copy' in diesem zweiten Ausschnitt? Der Fehler bedeutet, dass es sich um ein leeres Abfrage-Set handelt. Woher kommt es? –

+0

Ich habe die Frage aktualisiert. – Sushil

Antwort

0

Genau wie der Fehler sagt, haben Sie eine Book Instanz hava und diese Instanz zu Ihrem book_copy zuweisen. Sie müssen zuerst eine BookCopy erstellen (müssen Sie Ihr BookCopy-Modell überprüfen), beispielsweise -> book_copy = BookCopy.objects.create(). Und in Bezug auf die Instanz zu speichern, überprüfen Sie dies für Detail: https://docs.djangoproject.com/en/1.11/ref/models/querysets/#create

0

Der Fehler angezeigt, weil Sie versuchen, eine queryset Cannot assign "<QuerySet []>" zuweisen Ihr Problem, das Sie bekommen verwenden zu lösen, die ein einzelnes Objekt und kein queryset zurückkehren

member = Member.objects.get(member_id=memberId) 
book_copy = BookCopy.objects.get(book=book, copy_number=book_copy_id) 

Eine andere Möglichkeit wäre, das erste Objekt aus der queryset erhalten:

book_copy = BookCopy.objects.filter(book=book, copy_number=book_copy_id)[0] 
Verwandte Themen