我對django完全陌生,來自PHP的角度。我想寫一個真正的基本應用程序與四個類:書籍,電子書,流派和價格。每本書和電子書應該有一個類型和許多獎品。在SQL-DB中,我將一個字段放在Book和Ebook中,通過id引用一個流派表和一個名爲Book_prices的新表,它將Books和Ebooks鏈接到價格。Django模型關係(foreignkey)(manytomany)
table book_prices
id | type | price
---+--------+------
1 | book | 3
2 | book | 3
3 | ebook | 1
table book/ebook
id | ... | genre_id
---+-----+---------
1 | | 5
2 | | 7
3 | | 9
基本上我想爲每個電子書和書添加一個價格和一種流派的列表。我如何使用django模型來做到這一點?我知道model.ForeignKey()
可以應用於每個書籍/電子書引用一個流派。但是我的價格呢?如果我在價格上添加ForeignKey()
,則只能參考書籍或電子書。
class Book:
name = models.CharField(max_length=100)
pages = models.IntegerField()
class Ebook:
name = models.CharField(max_length=100)
filesize = models.FloatField()
class Genre:
name = models.CharField(max_length=100)
info = models.TextField()
class Price:
currency = models.CharField(max_length=4)
amount = models.FloatField()
如果您將使用south進行遷移,您可能會遇到一些問題。 http://stackoverflow.com/questions/1600129/using-south-to-refactor-a-django-model-with-inheritence – nk9 2012-07-24 11:58:03
@ b1-這是一個非常優秀的SO職位。謝謝。 – scytale 2012-07-24 12:00:46
@scytale我喜歡子類化的想法,但是如何在我的管理界面中顯示價格字段?將PriceInline類添加到我的BookAdmin/EbookAdmin會導致「..沒有ForeignKey to ..」異常。 – Joey 2012-07-24 21:53:43