如果Django中不满足其他字段的条件,如何隐藏字段?

2024-04-18 06:06:16 发布

您现在位置:Python中文网/ 问答频道 /正文

所以如果我的电脑里有这个代码型号.py你知道吗

class Computer(models.Model):
    brand = models.CharField(max_length=225)

如何在我的django管理中显示以下任何一个附加字段取决于上述品牌的价值?你知道吗

mac_os_version = models.CharField(max_length=225)
windows_os_version = models.CharField(max_length=225)
linux_os_version = models.CharField(max_length=225)

例如,如果brand==HP,则当您尝试在admin中输入数据时,仅显示windows\u os或linux的字段,而将隐藏mac\u os的字段。你知道吗


Tags: 代码pyosversionmodelslinuxwindowsmac
1条回答
网友
1楼 · 发布于 2024-04-18 06:06:16

您可以重写中的clean方法管理员.py

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是由表单验证的值的dict。因此,如果事先指定了windows品牌,您正在验证是否有人没有为字段mac_oslinux输入值。你知道吗

请注意,这并不是您所期望的行为。实际上,这只会在用户试图保存模型时向用户发出错误消息。如果您确实需要一个及时的解决方案,那么您将需要比Django代码更多的JS。你知道吗

相关问题 更多 >