2017-11-08 32 views
0

モデルに1を使用して新しいモデルのインスタンスを作成します。1と外部キーフィールド

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) 

保存新しいインスタンス:私はこのモデルの新しいインスタンスを保存するにはどうすればよい

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) 

を?私は1対1フィールドと外部キーフィールドに問題があります。

が、私はこのエラーを取得しています。エラーが言う

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

あなたはより多くのコンテキストを表示する必要があります。その2番目のスニペットで 'book_copy'とは何ですか?エラーはそれが空のクエリーセットであることを意味するので、どこから来ていますか? –

+0

質問を更新しました。 – Sushil

答えて

0

同じように、あなたはBookCopyインスタンスをHAVAし、あなたのbook_copyにそのインスタンスを割り当てる必要があります。 bookCopyをまず作成する必要があります(BookCopyモデルを確認する必要があります)。たとえば、book_copy = BookCopy.objects.create()のようにします。そして、インスタンスを保存するという点で、細部のためにこれを確認しますhttps://docs.djangoproject.com/en/1.11/ref/models/querysets/#create

0

エラーは、単一のオブジェクトではなくクエリセットを返すこと、あなたはあなたの問題を解決するためにクエリセットCannot assign "<QuerySet []>"を割り当てるしようとしているので、あなたが得る使用する必要が見えます

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

別のオプションは、クエリセットから最初のオブジェクトを取得することになります。

book_copy = BookCopy.objects.filter(book=book, copy_number=book_copy_id)[0] 
関連する問題