我有几个由sql Server中的GUID加入的表.现在,我找到了几个自定义字段来添加对
django中的GUID的支持,但是如果可能的话我倾向于避免在博客文章中使用代码.我不会与GUID做任何事情,除了加入它,也可能为新条目分配一个GUID(尽管这是可选的).有没有办法使用django的内置类型?像我可以使用某种字段或二进制字段和“诡计”django加入使用它?
@H_403_2@如果有任何帮助,我使用django-pyodbc.
解决方法
我将创建一个基本的GUID模型,以便重用它的项目中任何其他模型的属性.模型继承在Django 1.0之前的几个版本中运行良好,并且与Django 1.0相当稳定.
@H_403_2@创建一些类似project / common / models.py并放在这个类中:
@H_403_2@然后像往常一样创建其他模型:
- 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)
@H_403_2@并且一切都应该很好地使用GUID作为主键而不是自动增量整数.
- 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()