在我的管理员对象Chair
我有一个TabularInline
对于任意数量的Desk
对象。我希望每个Chair
始终至少有一个与之相关联的对象Desk
。有没有办法让管理界面强制用户输入至少一个Desk
?如果没有输入Desk
,就显示错误?Django:强制管理员用户在TabularInline中输入至少一个项目
7
A
回答
0
马修弗拉纳根有一个很好的例子,说明如何在一个formset中需要一个有效的表单:http://code.google.com/p/wadofstuff/wiki/WadOfStuffDjangoForms和http://wadofstuff.blogspot.com/2009/08/requiring-at-least-one-inline-formset.html 希望能帮助你。
8
一个通用的表单集中clean()
方法用于需要的至少一个项目:
def clean(self):
"""Check that at least one service has been entered."""
super(MyFormSet, self).clean()
if any(self.errors):
return
if not any(cleaned_data and not cleaned_data.get('DELETE', False)
for cleaned_data in self.cleaned_data):
raise forms.ValidationError('At least one item required.')
这应为纯的formsets,模型和表单集在线模型表单集工作。
15
使用akaihola的答案,这里是一个更完整的例子:
添加到您的forms.py:
from django import forms
from django.forms.models import BaseInlineFormSet
class AtLeastOneRequiredInlineFormSet(BaseInlineFormSet):
def clean(self):
"""Check that at least one service has been entered."""
super(AtLeastOneRequiredInlineFormSet, self).clean()
if any(self.errors):
return
if not any(cleaned_data and not cleaned_data.get('DELETE', False)
for cleaned_data in self.cleaned_data):
raise forms.ValidationError('At least one item required.')
,然后在你的admin.py:
class DeskInline(admin.TabularInline):
model = Desk
formset = AtLeastOneRequiredInlineFormSet
class ChairAdmin(admin.ModelAdmin):
inlines = [DeskInline,]
admin.site.register(Chair, ChairAdmin)
相关问题
- 1. Django管理TabularInline抱怨缺少现场
- 2. Django限制管理员输入
- 3. Django管理反向TabularInline
- 4. 在TabularInline Django管理员表单中重写formset
- 5. 如何强制用户在WinForms的用户管理员帐户
- 6. Django管理员:在用户输入中允许使用一些HTML
- 7. django管理失败使用TabularInline
- 8. Django管理员用户
- 9. Django管理员:强制性非强制性字段
- 10. 用户和管理员Java项目
- 11. 无法输入密码。 (创建一个Django管理员超级用户)
- 12. 如何强制用户选择至少一个检查按钮
- 13. 让至少一个组成为强制
- 14. 强制一个数组拥有至少一个具有特定值的项目
- 15. 如何强制用户输入至少一个字符或某些在python 3中无法绕过的字符?
- 16. ASP.net会员身份强制用户离线(作为管理员)
- 17. 当前用户在Django管理员
- 18. Rails - 用户和管理员的CRUD,多少个控制器?
- 19. 让只有管理员用户输入playframework管理CRUD区域
- 20. Django管理员DoesNotExist在/管理员/
- 21. 选择二验证并强制用户选择AST至少X项目
- 22. 在Django中以多对多的关系强制至少一个值?
- 23. 定制Django中的TabularInline
- 24. 如何确保用户输入至少一个值Python
- 25. 查询至少一个项目
- 26. Array至少有一个项目 - Dust.js
- 27. Appfog Django管理员css缺少
- 28. 至少有一个输入字段(jQuery)
- 29. 如何将选项限制在Django中的外键管理员
- 30. 找店家丢失至少一个项目中的项目
而且检查此线程:http://stackoverflow.com/questions/1206903/how-do-i-require-an-inline-in-the-django-admin/1233644#1233644 – arie 2011-04-13 12:47:52