Allow only one instance of a model in Django

后端 未结 7 1122
南笙
南笙 2020-12-06 00:57

I would like to control some configuration settings for my project using a database model. For example:

class JuicerBaseSettings(models.Model):
    max_rpm =         


        
7条回答
  •  [愿得一人]
    2020-12-06 01:28

    If your model is used in django-admin only, you additionally can set dynamic add permission for your model:

    # some imports here
    from django.contrib import admin
    from myapp import models
    
    @admin.register(models.ExampleModel)
    class ExampleModelAdmin(admin.ModelAdmin):
    
        # some code...
    
        def has_add_permission(self, request):
            # check if generally has add permission
            retVal = super().has_add_permission(request)
            # set add permission to False, if object already exists
            if retVal and models.ExampleModel.objects.exists():
                retVal = False
            return retVal
    

提交回复
热议问题