对于以下型号:
class Price:
cad = models.DecimalField(max_digits=8, decimal_places=2)
usd = models.DecimalField(max_digits=8, decimal_places=2)
class Product:
name = models.CharField(max_length=255)
price = models.ForeignKey(Price)
对于每种产品,它与一个且仅有一个Price对象相关,该对象将包含加拿大或美元价值。以上是设置这种关系的正确方法吗?以下是一些示例数据:
Shirt, $100 US, $120 CAD
Book, $20 US, $25 CAD
我还想从管理员输入上述信息,以便界面类似于以下内容:
添加产品
我可以或多或少地使用以下代码执行上述操作:
class ProductInline(admin.StackedInline):
model = Product
class PriceAdmin(admin.ModelAdmin):
inlines = [
ProductInline,
]
我是以正确的方式做的吗?
答案 0 :(得分:1)
为什么不让字段cad
和usd
成为Product
表的成员?这样你就可以免费获得管理员的善意。你把它们存放在一个单独的模型中会得到什么?
另外,为什么不只是存储一个价格,并且有汇率(我不知道这是否适合您的定价模式,但似乎从您给出的示例)。这样您只需要输入一个价格,系统的其他位可以在需要时以替代货币显示价格。
我使用模板标签做类似的事情,根据会话变量管理给定货币的货币值显示(当我遇到困难时,请参阅the question I asked。)
答案 1 :(得分:0)
我认为你必须使用one2one人际关系
class Price:
cad = models.DecimalField(max_digits=8, decimal_places=2)
usd = models.DecimalField(max_digits=8, decimal_places=2)
class Product:
name = models.CharField(max_length=255)
price = models. OneToOneField(Price, primary_key=True)
http://www.djangoproject.com/documentation/models/one_to_one/