- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在我正在开发的应用程序中,我试图在公司内共享访问 token 。示例:本地办事处可以使用总部的代币在其 Facebook 页面上发布内容。
class AccessToken(models.Model):
"""Abstract class for Access tokens."""
owner = models.ForeignKey('publish.Publisher')
socialMediaChannel = models.IntegerField(
choices=socialMediaChannelList, null=False, blank=False
)
lastUpdate = models.DateField(auto_now=True)
class Meta:
abstract = True
由于 Facebook、Twitter 和其他社交媒体网站以他们自己的方式处理访问 token ,我创建了抽象类 AccessToken。每个站点都有自己的类,例如
class FacebookAccessToken(AccessToken):
# class stuff
阅读之后,我发现我必须使用 GenericForeignKey
来指向继承 AccessToken
的类。我做了以下类(class):
class ShareAccessToken(models.Model):
"""Share access tokens with other publishers."""
sharedWith = models.ForeignKey('publish.Publisher')
sharedBy = models.ForeignKey(User)
# for foreignkey to abstract model's children
contentType = models.ForeignKey(ContentType)
objectId = models.PositiveIntegerField()
contentObject = GenericForeignKey('contentType', 'objectId')
class Meta:
unique_together = (('contentObject', 'sharedWith'))
当我运行 django 测试服务器时,出现以下错误:
core.ShareAccessToken: (models.E016) 'unique_together' refers to field 'contentObject' which is not local to model 'ShareAccessToken'. HINT: This issue may be caused by multi-table inheritance.
我不明白为什么会出现此错误,第一次使用 GenericForeignKey
。我做错了什么?
如果有更智能的方式来共享访问 token ,我很乐意听到。
最佳答案
您在这种情况下使用通用外键是正确的。
错误来自模型中的 unique_together
声明。 unique_together
只能与数据库中存在的列一起使用。由于 contentObject
不是真正的列,Django 会提示该约束。
相反,您可以执行以下操作:
unique_together = (('contentType', 'contentId', 'sharedWidth'),)
这等同于您在问题中定义的内容,因为 contentObject
实际上只是 contentType
和 contentId
在幕后的组合。
关于python - Django:GenericForeignKey 和 unique_together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35228902/
我根据文档编写了此类,以便能够对应用程序中具有 id 的任何内容进行投票: class Vote(models.Model): class Meta: unique_toget
我正在尝试在 Django 中将 ForeignKey 转换为 GenericForeignKey。我计划在三个迁移中执行此操作,mig1、mig2、mig3。 迁移1(mig1)有以下代码 clas
我正尝试在 this tutorial 之后实现事件提要. 当相应的对象(即评论本身)已被删除时,我想删除一个事件(即已添加评论)。这似乎没有级联。 有没有办法在不添加 GenericRelation
我正在创建一个 Django 应用程序,其中所有模型都可以按照用户设置的顺序相互关联。我正在使用 GenericForeignKeys 设置所有这些。关键是我需要能够支持这些类型的关系/管理的多个集合
class MyUser(AbstractBaseUser): ... content_type = models.ForeignKey(ContentType, limit_choi
假设我有一个模型 Box与 GenericForeignKey指向 Apple实例或 Chocolate实例。 Apple和 Chocolate ,反过来,拥有 Farm 的 ForeignKeys和
我正在创建一个自定义评论系统,它可以使用 contenttypes GenericForeignKey 将评论附加到任何模型。 class Comment(models.Model): bod
我更改了 GenericForeignKey() 可以引用的某些对象的默认管理器,以便这些对象可能不再出现在该默认管理器中。 我有其他管理器能够找到这些已删除对象,但我看不出有什么办法可以告诉内容类型
好的,所以我的数据库有一个标题/行类型结构,其中有标题模型,其中有许多行模型。许多型号都采用这种结构。我想跟踪哪些 header 模型与哪些行模型相关。 最初,我只是在 header 模型上有一个指向
重要提示:此问题不再相关。 在 Django 1.7 迁移中,我尝试使用以下代码以编程方式创建评论条目: # -*- coding: utf-8 -*- from __future__ import
我想在 Django Rest Framework 中显示相关 GenericForeignKey 的嵌套表示。这是我尝试过的: class ContentRelatedField(serialize
我是 GenericForeignKey 的新手,我无法让它在查询语句中工作。表格大致如下: class Ticket(models.Model): issue_ct = models.For
我如何根据用户的 content_type 选择创建/处理动态表单? 我正在编写一个 View /模板来添加一个对象,该模型持有其他模型的通用键: class MainModel(models.Mo
我有一个模型,它使用通用外键使用“content_type”字段来存储内容类型和“object_id”来存储对象 ID。该模型需要使用 CRUD API 进行操作,而我正在使用 DRF。我有一个模型的
我正在 Django 中开发一个讨论应用程序,它包含主题、帖子、回复和投票。投票使用 Generic Foreign Keys and Content Types以确保用户只能对特定主题/帖子/回复投
下面的模型显示了一个简单的 GenericForeignKey 关系。它以这种方式设置,以允许任何其他模型重用图像。 class Image(models.Model): name = mod
我有一个事件应用程序来记录用户或任何事件操作。因此,为了实现这一点,我必须在我的模型上使用 GenericForeignKeys,因为许多模型可以执行操作。 这是我的模型: class Activit
我有以下内容: target_content_type = models.ForeignKey(ContentType, related_name='target_content_type') tar
我使用了一个投票应用程序(django-ratings,如果这有什么不同的话),它使用 django 的 GenericForeignKey,有一个用户的 ForeignKey,以及几个其他字段,比如
有没有一种方法可以让 GenericForeignKey 具有与foreignkey连接的两个模型上的字段? from django.db import models from django.cont
我是一名优秀的程序员,十分优秀!