帮助建立Django模型关系&;管理屏幕

帮助建立Django模型关系&;管理屏幕,django,django-models,django-admin,Django,Django Models,Django Admin,我第一次和Django和StackOverflow在一起,所以需要一些帮助 一个平台有许多类别,一个类别可以属于许多平台。产品属于一个平台和一个或多个平台类别 到目前为止,我的模型都是这样的: class Category(models.Model): name = models.CharField(max_length=50, unique=True) is_active = models.BooleanField(default=True) def __unico

我第一次和Django和StackOverflow在一起,所以需要一些帮助

一个平台有许多类别,一个类别可以属于许多平台。产品属于一个平台和一个或多个平台类别

到目前为止,我的模型都是这样的:

 class Category(models.Model):
    name = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(default=True)

    def __unicode__(self):
        return self.name

class Platform(models.Model):
    name = models.CharField(max_length=50, unique=True)
    is_active = models.BooleanField(default=True)
    categories = models.ManyToManyField(Category)

    def __unicode__(self):
        return self.name

class Product(models.Model):
    name = models.CharField(max_length=50)
    is_active = models.BooleanField(default=True)
    platform = models.ForeignKey('Platform')

    def __unicode__(self):
        return self.name

    class Meta:
        unique_together = ("platform", "category")
在shell中看起来一切正常,但我不能完全理解的是,在创建新产品时,如何根据平台缩小类别?理想情况下,我将能够得到这在管理屏幕工作


这个型号看起来还可以,还是我可以做得更好

我感觉您所问的是,当使用管理界面并创建新的
产品
模型时,您希望能够选择一个
平台
,然后能够选择一个类别,其中,根据所给的类别选项,只有那些已经与所选
平台
关联的选项

我的朋友比看起来要难一点。原因是django内置没有服务器“往返”,在选择了
平台
后,web应用程序将前往服务器,收集
类别
的选项,然后将其显示给您。默认情况下没有这样的选项(尽管如果这最终成为标准Django包的一部分,我也不会感到惊讶)

但是,有一种方法可以通过在javascript/ajax中实现它来实现,这可能会有点困难,这取决于您对其中任何一种的体验


好消息是,与Django中最常见的任务一样,通常有一个社区应用程序正在开发中或已经可以满足需要。在这种情况下,可能值得一看。

您是否缺少产品和类别之间的关系?你在问题中提到了这一点,但你在产品上没有分类属性啊,好吧,我想我也非常感谢你的链接。可能需要重新考虑一下我的模型。我需要能够获得平台内的所有类别。还需要统计具有该类别的产品的数量。