【问题标题】:Django - Custom ModelAdmin form not overriding default modelsDjango - 自定义 ModelAdmin 表单不覆盖默认模型
【发布时间】:2020-05-11 21:33:45
【问题描述】:

我定义了一个模型

class subnet(models.Model):
subnet_id = models.AutoField(primary_key=True)
subnet_pod = models.ForeignKey(pod, null=True, on_delete=models.SET_NULL, verbose_name='Select Pod')
subnet_number = models.IntegerField(verbose_name='VLAN/SVI Number')
subnet_description = models.CharField(max_length=10, verbose_name='Subnet Description')
LAYER_CHOICES = (
    ('Layer2', 'Layer2'),
    ('Layer3', 'Layer3'),
)
subnet_layer = models.CharField(max_length=50, choices=LAYER_CHOICES,verbose_name='Layer2/3')
subnet_ip = models.CharField(max_length=50, verbose_name='Gateway IP/Mask')
vrf = models.ForeignKey(vrf,blank=True, null=True, on_delete=models.SET_NULL, verbose_name='Select VRF')

class Meta:
    verbose_name = 'Subnet'
    verbose_name_plural = 'Subnets'

def __str__(self):
    return self.subnet_number

我想覆盖 subnet_ip 并使用自定义表单为其添加标签和占位符,所以我有:

class subnetForm(forms.ModelForm):
class Meta:
    model = subnet
    fields = ['subnet_number', 'subnet_description', 'subnet_layer', 'vrf']
    widgets = {
        'subnet_ip': forms.TextInput(attrs={'placeholder': 'e.g,: x.x.x.x/x'}),
    }

但是,占位符不会应用于模型,也不会显示在前端。

我也有一个 admin.py:

class subnetAdmin(admin.ModelAdmin):
list_display = ('subnet_number','subnet_description','subnet_layer','subnet_ip','vrf')
ordering = ('-subnet_number',)

感谢任何帮助!

【问题讨论】:

    标签: django django-models django-modeladmin


    【解决方案1】:

    试试这个!

    class subnetForm(forms.ModelForm):
       subnet_number = <use same model field datatype> forms.CharField(label = 'subnet_number', widget = forms.TextInput(attrs = {'placeholder' : 'subnet number'}))
       class Meta:
           model = subnet
           fields = ['subnet_number', __other_fields__]
    

    【讨论】:

    • 那行不通。需要占位符的字段是 subnet_ip 。我试过了:class subnetForm(forms.ModelForm): subnet_ip = forms.CharField(label = 'subnet_ip', widget = forms.TextInput(attrs = {'placeholder' : 'Test'})) class Meta: model = subnet fields = ['subnet_ip','subnet_number', 'subnet_description', 'subnet_layer', 'vrf']
    猜你喜欢
    • 2011-01-24
    • 2019-08-01
    • 2015-04-06
    • 1970-01-01
    • 2014-01-05
    • 2022-11-02
    • 1970-01-01
    • 2016-07-29
    • 2013-08-03
    相关资源
    最近更新 更多