Django 管理 GenericForeignKey 小部件

2024-05-06

我正在创建一个 Django 应用程序,其中所有模型都可以按照用户设置的顺序相互关联。我正在使用 GenericForeignKeys 设置所有这些。更重要的是,我需要能够支持这些类型的关系/管理的多个集合。因此,一个对象可以拥有多个相关对象的集合。

有谁知道针对这种情况有一个好的 GenericForeignKey 小部件吗?最好是填充管理表单的自动完成搜索,因为我最终可能会拥有大量对象。

这是我的应用程序的代码,可以更好地理解我的意思。

from django.contrib import admin
from django.contrib.contenttypes import generic
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django import forms


# Models
class Base(models.Model):
    title = models.CharField(max_length=255)

    class Meta:
        abstract = True

    def __unicode__(self):
        return self.title

class Related(Base):
    """ A generic relationship model for relating resources.
    """
    order = models.IntegerField(blank=True, null=True)
    limit = models.Q(model = 'Apple') | models.Q(model = 'Orange') | models.Q(model = 'Pear') 

    content_type = models.ForeignKey(ContentType, related_name="related_%(class)s")
    object_id = models.PositiveIntegerField(db_index=True)
    object = generic.GenericForeignKey()

    related_content_type = models.ForeignKey(ContentType, related_name="related_related_%(class)s", limit_choices_to = limit)
    related_object_id = models.PositiveIntegerField(db_index=True)
    related_object = generic.GenericForeignKey('related_content_type', 'related_object_id')

    class Meta:
        ordering = ('order',)
        abstract = True

    def __unicode__(self):
        return self.object.title

class FreshFruit(Related):
    pass

class OldFruit(Related):
    pass

class Apple(Base):
    pass

class Orange(Base):
    pass

class Pear(Base):
    pass

# Admin classes
class FreshFruitInline(generic.GenericStackedInline):
    model = FreshFruit
    extra = 1
    # Admin classes

class OldFruitInline(generic.GenericStackedInline):
    model = OldFruit
    extra = 1

class AppleAdmin(admin.ModelAdmin):
    inlines = [FreshFruitInline, OldFruitInline,]
admin.site.register(Apple, AppleAdmin)

class OrangeAdmin(admin.ModelAdmin):
    inlines = [FreshFruitInline, OldFruitInline,]
admin.site.register(Orange, OrangeAdmin)

class PearAdmin(admin.ModelAdmin):
    inlines = [FreshFruitInline, OldFruitInline,]
admin.site.register(Pear, PearAdmin)

我搜索了又搜索,找到了可以为多对多关系执行此操作的小部件,但没有适合我的情况。

感谢您花时间查看此内容。


看看 Grappelli 的通用外键小部件,它运行良好:django-grappelli/generic_2_2 https://django-grappelli.readthedocs.org/en/autocomplete/customization.html#related-lookups

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 管理 GenericForeignKey 小部件 的相关文章

随机推荐

  • C# - 如何检测 SQLite DB 是否被锁定?

    我正在开发一个使用 SQLite 的多线程 C 程序 我遇到一个问题 有时运行 SQLiteCommand ExecuteNonQuery 来更新某些行会抱怨 SQLite 错误 5 数据库已锁定 我知道发生这种情况是因为数据库在插入或更新
  • Dapper MySQL 返回值

    我在 ASP net Identity 项目中使用 dapper 和 MySql 时遇到问题 我想将用户插入到表 users 中 并希望从这次插入中返回自动生成的 id 但我收到语法错误 我不知道为什么 这是我的方法插入代码 public
  • JAR 清单代码库不匹配

    我在 dropbox 中有一个小程序 在 droppages 中有一个链接 该小程序是自签名的 按照代码操作 Manifest Version 1 0 Ant Version Apache Ant 1 9 1 X COMMENT Main
  • 检查SCNNode SCNAction是否完成

    我创建了一个 SceneKit 3D 迷宫世界 玩家可以在其中移动 有些动作 例如跳跃 涉及上下移动相机 同时在几秒钟的时间内改变视角方向 在此期间 我想忽略用户的点击和滑动 这通常会导致其他类型的运动 例如转身和向前移动 我可以创建一个与
  • Teradata Volatile Table 语句未创建任何行

    我想在 Teradata 中创建表 因此我使用这个语法 CREATE VOLATILE TABLE a AS Select FROM WITH DATA PRIMARY INDEX ACCOUNT ID 内部 SELECT 语句生成 4 行
  • unnest_longer 给出美元符号而不是正常的小标题

    任何人都可以解释以下差异 library tidyverse tribble id c 1 10 gt unnest longer id gt mutate data map x id mtcars gt unnest longer dat
  • Windows 上的本机窄字符串编码是什么?

    Subversion API 有一个功能数量 http subversion apache org docs api latest svn utf 8h html用于从 本机编码 字符串转换为以 UTF 8 编码的字符串 我的问题是 Win
  • PHP 会话中的数据错误

    我对网上商店进行了以下设置 当用户登录时 通过 AJAX 调用脚本 该脚本根据 SOAP Web 服务验证用户数据 并返回用户数据 当用户登录时 用户数据保存在 PHP 会话中 用户数据 仅通过 SOAP 检索 而不由商店存储 我使用默认的
  • 设置属性时 NSTextAttachment 图像消失

    我在应用属性时遇到问题NSMutableAttributedStrings 如果它们有图像附件 则添加属性后图像就会消失 Take an NSMutableAttributedString其中包括文本附件 如下所示 let myString
  • 函数式编程是否需要新的命名约定?

    我最近开始使用 Haskell 学习函数式编程 并在 Haskell 官方 wiki 上发现了这篇文章 如何阅读哈斯克尔 http www haskell org haskellwiki How to read Haskell What t
  • 缩放视图中的文本以适合?

    我不相信这存在 但想仔细检查一下 我想设置 TextView 的文本大小 使其适合给定宽度的单行 例子
  • Amazon S3 上传错误 SSL 证书问题

    我正在尝试在本地主机上测试 Laravel Amazon S3 但不断收到相同的错误 WrappedHttpHandler php 第 192 行中的 S3Exception 执行时出错 列表对象 上 https s3 us west 2
  • LOAD DATA LOCAL INFILE 给出错误:此 MySQL 版本不允许使用命令

    我有一个调用 MySQL 的 PHP 脚本LOAD DATA INFILE从 CSV 文件加载数据 但是 在生产服务器上 我最终遇到了以下错误 用户访问被拒绝 使用密码 是 作为快速解决方法 我将命令更改为LOAD DATA LOCAL I
  • Maven 依赖项更新报告需要数小时才能完成

    我有任务运行 Jenkins 工作女巫会报告新版本的库 我认为这些可以满足我的需要 org codehaus mojo versions maven plugin 2 5 plugin updates report org codehaus
  • 自动更改 github 文件

    我制作了一个带有白名单的应用程序 withelist 位于 github 存储库上 只有一个文件 即 withelist 每次下载我的应用程序的用户想要被允许使用该应用程序时 都必须向我发送一个消息插入白名单 现在这个过程真的很慢 我想加快
  • MYSQL插入GB大小的巨大SQL文件

    我正在尝试创建 Wikipedia DB 副本 大约 50GB 但在处理最大的 SQL 文件时遇到问题 我使用 linux split 实用程序将 GB 大小的文件拆分为 300 MB 的块 例如 split d l 50 enwiki 2
  • 函数内的静态变量如何工作?

    在下面的代码中 int count static int n 5 n n 1 return n 变量n仅在第一次调用该函数时实例化一次 应该有一个标志或其他东西 所以它只初始化变量一次 我试图查看 gcc 生成的汇编代码 但没有任何线索 编
  • Amazon VPC NACL 默认规则评估顺序

    据我了解 NACL 网络访问控制列表 就是子网防火墙 我试图了解创建 NACL 时的默认值 规则 100 默认情况下允许来自所有 IP 的所有端口 否则 一切都被否定 那么 底线是 是全部允许还是全部拒绝 我知道根据 AWS 最佳实践 默认
  • 无法从表存储中获取记录

    我有一个表存储表 我想从中获取一些数据 插入和更新查询工作正常 但当我尝试选择一些记录时遇到问题 下面是我到目前为止所做的代码 class TransactionEntity TableEntity public String s get
  • Django 管理 GenericForeignKey 小部件

    我正在创建一个 Django 应用程序 其中所有模型都可以按照用户设置的顺序相互关联 我正在使用 GenericForeignKeys 设置所有这些 更重要的是 我需要能够支持这些类型的关系 管理的多个集合 因此 一个对象可以拥有多个相关对