Circuit モデル クラスの管理クラスで、外部キー フィールドのオブジェクトを次のようにフィルター処理しようとしています。
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "current_firmware":
kwargs["queryset"] = FirmwareVersion.objects.filter(firmware__circuit_model=self.model)
return super(CircuitAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
current_firmware
理由はわかりませんが、フィルタリング後にフィールドの選択肢のリストが空です。たぶん、誰でもこれで私を助けることができます。私はこれらのクラスを持っています:
class FirmwareVersion(models.Model):
firmware = models.ForeignKey(Firmware)
version = models.CharField(max_length=100)
class Firmware(models.Model):
name = models.CharField(max_length=250)
circuit_model = models.ForeignKey(Versiiplates)
class Versiiplates (Model):
version = ForeignKey(Plates)
nomer_oboznachenie = CharField(max_length=8)
class Circuit(models.Model):
circuit_id = models.PositiveIntegerField(blank=True, null=True)
model = models.ForeignKey(Versiiplates)
current_firmware = models.ForeignKey(FirmwareVersion, blank=True, null=True)