我有几个由sql Server中的GUID加入的表.现在,我找到了几个自定义字段来添加对
django中的GUID的支持,但是如果可能的话我倾向于避免在博客文章中使用代码.我不会与GUID做任何事情,除了加入它,也可能为新条目分配一个GUID(尽管这是可选的).有没有办法使用django的内置类型?像我可以使用某种字段或二进制字段和“诡计”django加入使用它?
如果有任何帮助,我使用django-pyodbc.
解决方法
我将创建一个基本的GUID模型,以便重用它的项目中任何其他模型的属性.模型继承在Django 1.0之前的几个版本中运行良好,并且与Django 1.0相当稳定.
创建一些类似project / common / models.py并放在这个类中:
import hashlib import random from django.db import models class GUIDModel(models.Model): guid = models.CharField(primary_key=True,max_length=40) def save(self,*args,**kwargs): if not self.guid: self.guid = hashlib.sha1(str(random.random())).hexdigest() super(GUIDModel,self).save(*args,**kwargs)
然后像往常一样创建其他模型:
from common.models import GUIDModel class Customer(GUIDModel): name = models.CharField(max_length=64) class Product(GUIDModel): name = models.CharField(max_length=64) class Sale(GUIDModel): customer = models.ForeignKey(Customer) product = models.ForeignKey(Product) items = models.PositiveIntegerField()
并且一切都应该很好地使用GUID作为主键而不是自动增量整数.