有没有办法使用 GUIDs 在 django?

我有一对连接的表 GUIDs 在 SQL Server. 现在我发现了几个用户字段以添加支持。 GUIDs 在 django, 但是,如果通常是可能的,我倾向于害羞地远离使用代码。 我不会做任何事情 GUID, 除了加入它并可能分配 GUID 对于新记录 /虽然它是可选的/. 是否有任何方法可以使用嵌入式来解决它 django? 例如,我可以使用一些字段吗? char 或二进制字段和 "trick" 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//


一切都应该很好 GUIDs 作为主键而不是自动芯片整数。

奔跑吧少年

赞同来自:

旧问题,但对于那些使用的人 Django 1.8+ 内置
https://docs.djangoproject.com ... field
它可能很有用。

知食

赞同来自:

如果我做
python manage.py inspectdb

, 结果将大致如下:


class SomeModel/models.Model/:
uid = models.TextField/primary_key=True/

class SomeOtherModel/models.Model/:
uid = models.TextField//


但是,它不起作用。 出于某种原因,如果它不起作用 uid 这是主要键。 因此,我将其更改为:


class SomeModel/models.Model/:
uid = models.TextField//

class SomeOtherModel/models.Model/:
somemodel = models.ForeignKey/SomeModel, db_column='uid', to_field='uid'/


它似乎工作但是

折磨

慢。

小姐请别说爱

赞同来自:

对于那些真正需要产生的人 GUIDs:


guid = hashlib.sha1/str/random.random////.hexdigest//

要回复问题请先登录注册