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)

最初にファームウェアを構成し、次にそれに関連するファームウェアバージョンを構成するために、管理者の変更フォームで選択する方法はありますか?

4

1 に答える 1

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)
于 2013-03-10T12:52:46.330 に答える