我在简单的 Django 项目中有三个模型。 我想在管理页面中添加时按品牌过滤版本。 我尝试过不同的方式,其中一种包含在附加代码中。 admin.py 文件也像它显示的那样。 有什么建议吗?
class Brand(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Version(models.Model):
name = models.CharField(max_length=100)
manufacturer = models.ForeignKey(Brand, on_delete=models.CASCADE)
def __str__(self):
return f"{self.name} ({self.manufacturer})"
class Car(models.Model):
brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
version = models.ForeignKey(
Version,
on_delete=models.CASCADE,
limit_choices_to=Q(manufacturer=OuterRef('manufacturer_id'))
)
year = models.PositiveIntegerField()
color = models.CharField(max_length=50)
mileage = models.PositiveIntegerField()
def __str__(self):
return f"{self.brand} {self.version} {self.year} {self.color}"```
class CarAdminForm(forms.ModelForm):
class Meta:
model = Car
fields = '__all__'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance:
self.fields['version'].queryset = self.instance.brand.versions.all()
class CarAdmin(admin.ModelAdmin):
form = CarAdminForm
admin.site.register(Car, CarAdmin)
this is how I tried but w/o success.