- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个使用 django.db 的类,如下所示:
from django.db import models
class myClass(models.Model):
"My class"
class Meta:
db_table = 'my_table'
field1 = models.CharField()
# more fields here
def some_function(self):
return "hello"
我想把它变成一个没有硬编码“my_table”的通用类,这样我就可以以某种方式使用它,例如:
class GenericClass(models.Model):
class Meta:
db_table = None
# genericClass properties and methods here
class myClass(GenericClass):
id = models.CharField(max_length=20)
def __init__(self, *args, **kwargs):
super(self.__class__, self).Meta.db_table = 'my_table'
super(self.__class__, self).__init__(*args, **kwargs)
但是,这给了我以下错误(使用 Python 2.7/Django 1.11):
Local field u'id' in class 'myClass' clashes with field of similar name from base class 'GenericClass'
有什么方法可以创建一个扩展 django.db.models.Model 的通用类,它支持非默认数据库表名而无需对 Meta.db_table 进行硬编码?
最佳答案
我猜你问的是抽象父类(super class)/父类(super class)的 Django 等价物。
如果你想要的是 Django 模型的 AbstractSuperClass,你可以这样定义它
class AbstractModel(models.Model):
field1 = ...
field2 = ...
...
class Meta:
abstract = True
class SubClassModel(models.Model):
field3 = ...
class Meta:
db_table=sub_class_db_table
您的 AbstractModel 不会有数据库表。它只是作为一个父类(super class)来存储公共(public)字段(甚至您可以定义公共(public)函数)。
如果您DESC
sub_class_db_table,您将找到field1
、field2
、field3
。
参见 this了解更多详情。
如果您想自己创建一个 db_table 层次结构(field1
和 field2
将在 super_class_table
和 field3
将在 sub_class_table
中),您可以使用 Multi-table inheritance .这将非常有用,尤其是在存在服务契约(Contract)场景时 - 团队或模块拥有公共(public)功能,包括 db_table 及其维护。但这种方式不太常用。
关于django - Python/django.db : How to create a generic class without hardcoded Meta. db_table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48201869/
我想知道@HardCoded注释是什么。我在 Google 中搜索时没有找到任何文档。谢谢。 最佳答案 听起来更像是您误解了示例/解释(如果没有您使用的资源就不会知道)。检查Seam document
我的一个表中的 SELECT DISTINCT 值有一个大问题。 表 1:T1 pid box cassette seal added (timestam
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 4 年前。 Improve
这是 this question 的延续(决定将它分开以防万一将来有人会研究类似的问题) 基本上,设置是 applet 和 servlet 通信。 Servlet 的证书是自签名的并硬编码到小程序中。
有什么方法可以抑制布局文件中有关硬编码字符串的个别警告? 我经常将占位符文本放入 TextView 中,以便在设计时可以在布局中看到它们。这样做的缺点是收到大量关于硬编码字符串的警告。但如果没有它们,
我有代码,从概念上讲,我的输入是一些 Foo 对象的容器。代码一个一个地“处理”这些对象,期望的结果是填满 FooProduct 结果对象的容器。 我只需要一次通过输入容器。 “处理”是有状态的(这不
我们是否应该测试已知答案的值? 如果一个值重要到足以成为专用的硬代码值,那么它是否应该重要到足以在更改值的同时更改测试?或者这只是矫枉过正?! 最佳答案 如果您所说的“硬编码属性”是这样的(在 Jav
我编写了以下用于编码和解码字符串数据的类(一键对称算法): using System; using System.Collections.Generic; using System.Linq; usi
由于 TextView 中的某些分隔符(例如 ...+ ","+...),我收到了硬编码文本警告。 (“不要连接文本...”) 我尝试同时使用 SupressLint 和 SupressWarning
我试图了解如何在 native 代码中处理套接字读取超时,并在那里发现了一些奇怪的硬编码值 5000 毫秒: if (timeout) { if (timeout FindClass(env,
这个问题在这里已经有了答案: 关闭10年前. Possible Duplicate: hiding strings in Obfuscated code 我试图隐藏我的应用程序的一些静态字符串,以使其
尽管“BLAH”没有出现在匹配的字符串中,是否有可能有一个命名的捕获组总是具有“BLAH”的值? 实际上,我正在寻找类似于以下伪正则表达式的内容(注意假的 source=BLAH 语法): ^(?)$
我想简单地向该批处理文件代码中的变量“%%i”添加 10 并将其打印到屏幕上。 Numbers.txt 是一个包含单列数字的文件。 FOR /F %%i IN (numbers.txt) DO (
有人可以给我这个问题的提示(或整个解决方案!): 在 Clojurescript 项目中,如何自动将编译日期/时间硬编码在符号中,以便在使用应用程序时显示? 谢谢。 最佳答案 有多种解决方案: 使用l
我只想将 10 添加到此批处理文件代码中的变量“%%i”,并将其打印到屏幕上。 numbers.txt 是一个包含单列数字的文件。 FOR /F %%i IN (numbers.txt) DO (
我是按照教程第一次查看 django https://docs.djangoproject.com/en/1.6/intro/tutorial03/ 到目前为止,一切都很顺利。我在“删除硬编码的网址”
事实如下: 我的 webapp 中有 2 个包含 JPA 实体的 jar, 并且来自一个 jar (jar A) 的实体引用了另一个 jar (jarB) 中的实体 我把 /WEB-INF/lib/M
我正在使用回答 here on StackOverflow 的方法将自定义警察定义与其他类一起使用。该方法总结如下: [class^="icon-"]:before, [class*=" icon-"
我在我的程序中使用 inet_addr() 但我不希望 ip 地址被硬编码。所以我尝试 inet_addr(argv[1]) 但我的程序无法获取 IP 地址。谁能帮帮我? 服务器 int main(i
我需要避免在 Node 应用程序(代码或 View )中编写硬编码 UR。有包吗? 现在我用 Jade 写: a(href='/account/profile') 个人资料 个人资料 URL 是硬编码
我是一名优秀的程序员,十分优秀!