0

我的模型如下:

class Manufacturers(models.Model):
    name = models.CharField()

class Phones(models.Model):
    manufacturer = models.ForeignKey(Manufacturers)
    name = models.CharField()

class Prices(models.Model):
    phone = models.ForeignKey(Phones)
    price = models.DecimalFeild()

我已经在 admin.py 中注册了它们

我的问题是:在django的管理界面中,当我添加价格时,我可以从下拉列表中选择一个电话,但是电话太多了,所以我想先选择制造商,然后从制造商的电话中选择电话. 我怎样才能做到这一点。非常感谢。

4

1 回答 1

1

术语是“链式选择菜单”。

django中有许多实现。您可能会觉得有用的是django-smart-selects

使用 django-smart-selects,这就是你编写模型的方式:

class Manufacturers(models.Model):
    name = models.CharField()

class Phones(models.Model):
    manufacturer = models.ForeignKey(Manufacturers)
    name = models.CharField()

class Prices(models.Model):
    phone = ChainedForeignKey(
        Phone, 
        chained_field="manufacturer",
        chained_model_field="manufacturer", 
        show_all=False, 
        auto_choose=True
    )
    price = models.DecimalField()

说了这么多,我想知道你是否以最好的方式实现了这一点。

最好将价格显示在每部手机的管理表单下。因此,您无需创建价格记录并从下拉列表中选择电话,而是进入该电话的记录并添加价格记录。请参阅 django 关于InlineModelAdmin的文档。

于 2010-12-08T17:53:21.373 回答