我想用一个模型来保存一个django应用程序的系统设置,所以我想限制模型只能有一个记录,该怎么做的限制?限制django应用程序模型中的单个记录?
3
A
回答
3
一个简单的方法是使用该设置的名称作为设置表中的主键。用同一个主键不能有更多的记录,这样Django和数据库都可以保证完整性。
0
具有单个允许行的模型只不过是“持久对象”的变形形式 - 甚至可能是“持续单身人士”?不要那样做,那不是模型的工作原理。
5
试试这个:
class MyModel(models.Model):
onefield = models.CharField('The field', max_length=100)
class MyModelAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
# if there's already an entry, do not allow adding
count = MyModel.objects.all().count()
if count == 0:
return True
return False
3
威廉是正确的,但我想这是最好的做法
def has_add_permission(self, *args, **kwargs):
return not MyModel.objects.exists()
正如Django官方文档报道:
N ote:如果你想要做的只是确定是否存在至少一个结果,那么不要使用它。 使用exists()会更高效。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#when-querysets-are-evaluated
5
改写has_add_permission
作品,但在给出的例子是打破在Django的权限系统(工作人员没有必要的权限,可以添加设置)。这是一个不会打破它的:
class SettingAdmin(admin.ModelAdmin):
def has_add_permission(self, request):
base_add_permission = super(SettingAdmin, self).has_add_permission(request)
if base_add_permission:
# if there's already an entry, do not allow adding
count = Setting.objects.all().count()
if count == 0:
return True
return False
相关问题
- 1. 模型的记录数量限制
- 2. Django中的模型和应用程序
- 3. Django的:LookupError:应用程序“没有一个‘模型’模型
- 4. 限制登录的iPhone应用程序
- 5. Django模型的多元应用程序
- 6. Django的限制的模型中
- 7. 使用django中的模型表单更新记录
- 8. 跨应用程序使用django模型?
- 9. 使用模板记录应用程序
- 10. c#控制台应用程序的记录器应用程序
- 11. 在mysql中记录不同记录后应用10的限制
- 12. 记录Android应用程序内存限制
- 13. 使用Django模型的应用程序需要是Django应用程序吗?
- 14. Django,模型和应用程序
- 15. django模型foreignkey beetwen应用程序
- 16. Django(南):更改模型应用程序
- 17. Django模型强制标记
- 18. 单个Django应用程序的多个登录URL
- 19. 在django模型中限制图片
- 20. 如何确保在Django中测试单个应用程序时创建额外的应用程序模型表?
- 21. 每个应用程序模块的多个记录器实例
- 22. django一个应用程序一个模型多个数据库
- 23. 限制单个记录中的用户帖子
- 24. Django - admin.py在单个django项目中的多个应用程序
- 25. 应用程序启动时添加模型记录
- 26. django模型表单,限制在ForeignKey模型中基于值的选择
- 27. 限制访问Django应用程序中的所有页面
- 28. master slave postgresql记录和监控一个django应用程序
- 29. Django视图,模型,表单,应用程序命名
- 30. 在经典的asp应用程序中改进记录级访问限制