我对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