2010-01-21 7 views

Répondre

3

Un moyen simple consiste à utiliser le nom du paramètre comme clé primaire dans le tableau des paramètres. Il ne peut y avoir plus d'un enregistrement avec la même clé primaire, ce qui permettra à la fois à Django et à la base de données de garantir l'intégrité.

5

Essayez ceci:

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 
5

Écrasement has_add_permission œuvres, mais dans les exemples donnés, il rompt le système d'autorisations dans Django (personnel sans autorisations nécessaires peuvent ajouter des paramètres). Voici un qui ne le brise pas:

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 
Questions connexes