django-mptt 和 ForeignKey 的 blank=True
我在我的项目中使用django-mptt这个库。
这是我的models.py文件:
class Category(models.Model):
name = models.TextField()
parent = models.ForeignKey("self", blank=True, null=True,
related_name="sub_category")
image = models.ImageField(upload_to="categories", blank=True)
mptt.register(Category)
这是我的admin.py文件:
class CategoryAdmin(MPTTModelAdmin):
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'parent':
field = TreeNodeChoiceField(
queryset=Category.objects.all(),
level_indicator = u'+--',
)
else:
field = super(CategoryAdmin, self).formfield_for_dbfield(
db_field, **kwargs)
return field
admin.site.register(Category, CategoryAdmin)
我遇到的问题是——我不能选择没有父节点的选项,TreeNodeChoiceField在下拉框中没有显示'---'这个选项。你有什么建议吗?
1 个回答
1
在创建TreeNodeChoiceField对象的时候,使用required=False
。
field = TreeNodeChoiceField(
required=False,
queryset=Category.objects.all(),
level_indicator = u'+--',
)
Django的表单字段默认是required=True
,这意味着不允许值为None,也就是必须提供一个有效的值。