Generating a non-sequential ID/PK for a Django Model

There is built-in Django way to achieve what you want. Add a field to the model of “custom page” with primary_key=True and default= name of key generation function, like this: class CustomPage(models.Model): … mykey = models.CharField(max_length=6, primary_key=True, default=pkgen) … Now, for every model instance page, page.pk becomes an alias for page.mykey, which is being auto-assigned … Read more

Show a ManyToManyField as Checkboxes in Django Admin

From this answer it seems like it is possible to use ModelAdmin.formfield_overrides to override the ManyToManyField to use CheckBoxSelectMultiple: from django.db import models from django.contrib import admin from django.forms import CheckboxSelectMultiple class MyModelAdmin(admin.ModelAdmin): formfield_overrides = { models.ManyToManyField: {‘widget’: CheckboxSelectMultiple}, } I haven’t tried it and am merely quoting from the source, but it seems plausible. … Read more

Django models, custom functions

What you probably want is a custom manager From the django docs: # An example of a custom manager called “objects”. class PersonManager(models.Manager): def get_fun_people(self): return self.filter(fun=True) class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) fun = models.BooleanField() objects = PersonManager() def __unicode__(self): return u”%s %s” % (self.first_name, self.last_name) which then allows you to do … Read more

How do I override delete() on a model and have it still work with related deletes

I’m doing the same thing and noticed a nugget in the Django docs that you should think about. Overriding predefined model methods Overriding Delete Note that the delete() method for an object is not necessarily called when deleting objects in bulk using a QuerySet. To ensure customized delete logic gets executed, you can use pre_delete … Read more