- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我更改了 GenericForeignKey()
可以引用的某些对象的默认管理器,以便这些对象可能不再出现在该默认管理器中。
我有其他管理器能够找到这些已删除对象,但我看不出有什么办法可以告诉内容类型框架它们。这可能吗?
我正在对某些模型实现“软删除”,其中涉及以下管理人员:
from django.db import models
SDManager(models.Manager):
def get_query_set(self):
return super(SDManager, self).get_query_set().filter(is_deleted=False)
SDDeletedManager(models.Manager):
def get_query_set(self):
return super(SDDeletedManager, self).get_query_set().filter(is_deleted=True)
这允许我执行以下操作:
SDModel(models.Model):
# ...
objects = SDManager() # Only non (soft) deleted objects
all_objects = models.Manager() # The default manager
deleted_objects = SDDeletedManager() # Only (soft) deleted objects
当在模型中使用 GenericForeignKey()
字段来引用定义的对象(例如 SDModel
)时,它使用 _default_manager
属性来评估到objects
管理器,以获取引用。这意味着当对象被软删除时它会丢失引用。
这是我使用 GenericForeignKey()
字段的主要原因之一。我一直在研究的一个解决方案是实现内容类型框架的较小版本,以便我可以定义自己的 get_object()
,它使用 all_objects
管理器来访问引用对象。
所以我的问题确实是:
Is it possible to use a non-default manager with the existing content types framework so that it finds the soft deleted objects, or will I have to re implement all the parts I need from scratch?
最佳答案
我遇到了与您完全相同的问题,在深入研究文档/源代码后,Django 似乎没有提供开箱即用的方法来执行此操作。我发现的最简单的方法是子类化 GenericForeignKey
,然后重写 __get__
方法。
The troublesome line是它调用的地方:
rel_obj = ct.get_object_for_this_type(pk=getattr(instance, self.fk_field))
所以这一行需要重写为:
rel_obj = ct.model_class().all_objects.get(pk=getattr(instance, self.fk_field))
这有点骇人听闻,但它确实有效,然后您就可以像平常一样使用 GenericForeignKey 的全部功能。
关于django - 将非默认管理器与 GenericForeignKey() 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2375668/
我根据文档编写了此类,以便能够对应用程序中具有 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
我是一名优秀的程序员,十分优秀!