2013-03-08 36 views
0

另一个对象这是相当困难的我解释,我需要用的话是什么,所以我在这里是一些代码:选择对象,然后与此相关的

class Configuration(models.Model): 
    name = models.CharField(max_length=250) 
    firmware_version = models.ForeignKey(FirmwareVersion) 
    devices_amount = models.PositiveIntegerField() 
    def __unicode__(self): 
     return unicode(self.name) 

class Firmware(models.Model): 
    name = models.CharField(max_length=250) 
    circuit_model = models.ForeignKey(Versiiplates) 
    def __unicode__(self): 
     return unicode(self.name) 

class FirmwareVersion(models.Model): 
    firmware = models.ForeignKey(Firmware) 
    version = models.CharField(max_length=100) 
    file = models.FileField(upload_to="firmware/") 
    upload_date = models.DateField(default = datetime.date.today()) 
    notes = models.TextField(max_length=2500, null=True, blank=True) 
    def __unicode__(self): 
     return u'%s %s' % (self.firmware.__unicode__(), self.version) 

有什么办法在管理变化的形式选择首先配置固件,然后配置与其相关的任何FirmwareVersion?

回答

0

django-smart-selects实现此行为非常简单。在我的情况下配置类应该看起来像这样:

class Configuration(models.Model): 
    name = models.CharField(max_length=250) 
    firmware = models.ForeignKey(Firmware, related_name="firmware") 
    firmware_version = ChainedForeignKey(FirmwareVersion, chained_field="firmware", chained_model_field="firmware", show_all="False", auto_choose=True) 
    devices_amount = models.PositiveIntegerField() 
    def __unicode__(self): 
     return unicode(self.name)