Friday, October 31, 2014

Re: Primary keys vs. natural keys

> On Oct 31, 2014, at 4:19 AM, Torsten Bronger <> wrote:
> Carl Meyer writes:
>> [...]
>> There is no built in feature for this, but it doesn't seem like a
>> hard problem to solve with your own conventions. For instance,
>> rather than hardcoding the name of the natural key field inside
>> the natural_key method, make it a model class attribute,
>> e.g. MyModel.natural_key_field.
> Do you mean this:
> class ExternalOperator(models.Model):
> name = models.CharField(_("name"), max_length=30, unique=True)
> natural_key_field = "name"
> It works (at least, it doesn't abort) but I thought only fields were
> allowed as attributes.

Yes, that's what I mean (though usually for clarity I would place any non-field attributes in a separate visual block - separated by a blank line - from field attributes). There is no requirement that all class attributes of models must be fields. Django can tell which are subclasses of Field and ignores the others.


You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To post to this group, send email to
Visit this group at
To view this discussion on the web visit
For more options, visit

No comments:

Post a Comment