2013-03-08 51 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)