Denigma
hevok @hevok October 17, 2012
Tutorial #database #fk #models

Default ForeignKey

There are at least three different ways to implement a default for a ForeignKey field.

Overwrite the init: ::

class Link(models.Model): def init(self, args, kwargs): super(Link, self).init(args, **kwargs) self.fields['site'].initial = Site.objects.get(domain='denigma.de')

Provide a helper function for the model definition: ::

def get_site(): return Site.objects.get(domain='denigma.de')

class Link(models.Model): url = models.UrlField() site = models.ForeignKey(Site, default=get_site)

Simple set the default pk for the field: ::

class Link(models.Model): url = models.UrlField() site = models.ForeignKey(Site, default=1)