Одна вещь о шифровании заключается в том, что если вы шифруете идентификатор для его передачи, вам также придется расшифровать его, прежде чем вы сможете его найти.
Альтернатива, которая может вам подойти, - добавить уникальный * безопасный хеш для каждого объекта Project, который создается с помощью save (), к рецепту по вашему выбору: например,
import hashlib
class Foo(models.Model):
...attributes here, eg name, ...
obj_hash = models.CharField(max_length=40, blank=True, null=False)
def save(self):
if not self.obj_hash:
self.obj_hash = hashlib.sha1(string of attributes vals here).hexdigest()
super(Foo, self).save()
и затем в вашем urlConf и представлениях есть что-то, что использует или ищет Foo по его obj_hash, а не по его идентификатору.
(* Да, я знаю, что технически он не гарантирован, чтобы быть уникальным, но столкновения хэшей не должны быть проблемой. Вы можете проверить, существует ли он перед сохранением, если вы действительно хотите.)