所以如果我在models.py中有这个代码
class Computer(models.Model):
brand = models.CharField(max_length=225)
如何根据上述品牌的价值在django admin中显示以下其他字段?
mac_os_version = models.CharField(max_length=225)
windows_os_version = models.CharField(max_length=225)
linux_os_version = models.CharField(max_length=225)
e.g。如果brand == HP,当您尝试在管理员中输入数据时,将显示windows_os或linux的字段,并且将显示mac_os的隐藏字段。
答案 0 :(得分:1)
您可以在 admin.py :
中覆盖clean方法from django.core.exceptions import ValidationError
def clean(self):
windows = {'HP','otherbrand1','otherbrand2'}
if self.cleaned_data['brand'] in windows and \
(self.cleaned_data['mac_os'] or self.cleaned_data['linux']):
raise ValidationError('Only windows is allowed')
return self.cleaned_data
cleaned_data
是由表单验证的值的字典。因此,如果事先指定了Windows品牌,则您确认有人未为字段mac_os
或linux
输入值。
请注意,这不是您期望的确切行为。实际上,如果他试图保存模型,这只会向用户发出错误消息。如果你绝对需要一个及时的解决方案,你需要比Django代码更多的JS。