Skip to main content
 首页 » 编程设计

python之避免 Django ModelForm 和 Django Model 之间的重复

2025年02月15日24Leo_wl

我感兴趣的是有没有一种方法可以避免 Django ModelForm 和 Django Model 之间的重复。 例如。我有这个最简单的模型:

class Category(models.Model): 
    name = models.CharField(max_length=128) 

和对应的ModelForm

class CategoryForm(forms.ModelForm): 
    name = models.CharField(max_length=128) 
    class Meta: 
        model = Category 
        fields = ('name',) 

正如我们所见,这些实体之间存在重复。这段代码

max_length=128 

- 这是否违反了“不要重复自己”的原则?
如果违反了,我们如何避免这种代码重复?

请您参考如下方法:

但在您的情况下,您不必再在表单中指定 name 字段。

您正在使用 ModelForm,因此在 Meta 中只需定义模型,它引用此表单和应在表单中使用的字段。 Django 将为您获取小部件并构建表单。

这就够了

class CategoryForm(forms.ModelForm): 
    class Meta: 
        model = Category 
        fields = ('name',)