我感兴趣的是有没有一种方法可以避免 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',)
