0

私はDjangoを学んでおり、「The Django Book」でモデルの章を完成させましたが、以下の質問のためにManyToManyとForeignKeyに値を挿入する方法がわかりませんでした:

"Author"この下のモデルでは、詳細を挿入するにはどうすればよいです"Publisher"book name = "The book"publication-date = "28/10/2013"

値を挿入した後、どうすれば元に戻すことができ"Author"ます"Publisher"book name = "The book"

class Author(models.Model):
    first_name = models.CharField(max_length = 20)
    last_name = models.CharField(max_length = 20, blank = True)
    email = models.EmailField(blank = True)

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

 class Book(models.Model):
    title = models.CharField(max_length=100)
    publisher = models.ForeignKey(Publisher)
    authors = models.ManyToManyField(Author)
    publication_date = models.DateField()
4

2 に答える 2

1

本がデータベースに既に存在する場合。単に次のように実行するだけです

book_obj = Book.objects.get(title="テスト タイトル")   
author1 = Author.objects.get(name="test author1")
author2 = Author.objects.get(name="test author2")
author3 = Author.objects.get(name="test author3")
book_obj.authors.add(著者1、著者2、著者3)    

本がすでにデータベースにある場合は、出版社を追加できます。

書籍の新規エントリを作成する場合。

publisher = Publisher.objects.get(name='テスト発行者')
author = Author.objects.get(name='テスト作成者')
Book.objects.create(title='Title1', publication_date='28/10/2013', 著者=著者, 出版社=出版社)
于 2013-10-28T19:19:58.547 に答える
0

Stephen King の本 Pet Semetary を追加するとします。book オブジェクトを追加する前に、publisher と author のインスタンスが既に存在している必要があります。次に、それは非常に簡単です:

publisher = Publisher.objects.get(name='Simon & Schuster')
author = Author.objects.get(name='Stephen King')
new_book = Book(title='Pet Semetary', 
                publication_date='28/10/2013', 
                authors=author, 
                publisher=publisher)
new_book.save()

これはあなたが探していたソリューションですか?

コメントで更新

book オブジェクトが存在する場合は、次のように適用できます。

# create Author and Publisher:
new_author = Author(first_name='Stephen', last_name='King')
new_author.save()
new_publisher = Publisher(...bla bla...)
new_publisher.save()

# link them to your already existing book instance
book_instance = Book.objects.get(title='Pet Semetary')
book_instance.author = new_author
book_instance.publisher = new_publisher

もちろん、new_author や book_instance よりも一般的でない名前を使用する必要がありますが、アイデアはわかります

于 2013-10-28T17:54:09.627 に答える