由于多种原因^,我想在某些Django模型中使用UUID作为主键。如果这样做,我仍然可以使用通过ContentType使用通用关系的外部应用程序,例如“ contrib.comments”,“ django-voting”或“ django-tagging”吗?
以“ django-voting”为例,Vote模型如下所示:
class Vote(models.Model):
user = models.ForeignKey(User)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object = generic.GenericForeignKey('content_type', 'object_id')
vote = models.SmallIntegerField(choices=SCORES)
该应用似乎假设要投票的模型的主键是整数。
内置的注释应用程序似乎能够处理非整数PK,但是:
class BaseCommentAbstractModel(models.Model):
content_type = models.ForeignKey(ContentType,
verbose_name=_('content type'),
related_name="content_type_set_for_%(class)s")
object_pk = models.TextField(_('object ID'))
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
对于第三方应用程序来说,这种“整数PK假定”问题是否很常见,这会使使用UUID感到痛苦?或者,可能是我误读了这种情况?
有没有一种方法可以将UUID用作Django中的主键,而又不会造成太多麻烦?
^一些原因:隐藏对象计数,防止url“ id爬行”,使用多个服务器创建不冲突的对象,…
从文档中可以看出,从Django 1.8开始,有一个内置的UUID字段。使用UUID与整数时的性能差异可以忽略不计。
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
问题内容: 在JPA实体中使用byte []作为主键是否存在任何问题? 我想使用UUID作为主键,但存储为字符串,我觉得它会太大。 我正在考虑做这样的事情来将ID存储为byte []并将其设置为我的实体ID: 在数据库中为此设置索引会遇到麻烦吗?我同时使用Postgres和HSQL。我正在使用Hibernate作为我的JPA提供程序。 问题答案: 请记住,使用SQL客户端的用户在查询byte []
问题内容: 我想在Django模板的字典中使用变量作为键。我一辈子都无法弄清楚该怎么做。如果我有一个带有名称或ID字段的产品,以及带有该产品ID索引的评级词典,那么我想说: 在python中,这可以通过简单的方式完成 但是我无法使其在模板中工作。我尝试使用…没有骰子。有想法吗? 问题答案: 你需要预先准备数据,在这种情况下,你应该将两元组列表传递给模板:
问题内容: 我正在尝试为我的Django对象获取唯一的ID。在Django 1.8中,它们具有UUIDField。我不确定如何使用此字段来为模型中的每个对象生成唯一的ID。 这是我对UUIDField的要求 我可以重现UUID模型的ID,但是每次我都得到完全相同的ID。:(。 例如: id然后每次都给我相同的id。怎么了,我该如何解决?感谢您的帮助! 问题答案: 我不确定为什么要创建UUID模型。
问题内容: 我知道你会说这个问题被问过很多次了,但是我还没有解决呢… models.py views.py 模板: 我已经尝试过上面的模板,但没有得到任何结果。所以我想在DocImage类中获取imageurl地址… 所有帮助 问题答案: 如果您查看外键文档,如果您有类似的关系 您需要像这样在DocImages类上定义外键: 如果您未设置相关名称,则可以像下面这样从Doc访问DocImage: 有
我使用Spring Boot V1.5.3.Release和MYSQL作为创建Restful服务的后端。 我有一个表,希望它的主键是uuid类型,因为我认为该表中会有很多记录。 当我尝试用将主键从切换到时,它正按预期工作。 我是否以错误的方式定义了UUID,或者如果我们使用UUID生成,这样的更新将不起作用?
问题内容: 我正在使用mongoose使用Node.js,Express和MongoDB构建CRUD风格的REST服务。此服务将允许已经存在的android应用程序的用户在线上载/同步其单个数据库的内容。 已经存在的应用程序的数据模型使用UUID(用Java生成),该UUID与较短的单调MongoDB样式字段冲突。由于数据模型已经存在,并且填充了许多用户的数据,因此无法将源数据转换为单调的Mong