- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个抽象模型和两个子模型,例如:
class Invoice(models.Model):
user = models.ForeignKey("User", related_name='%(class)s')
class Meta:
abstract=True
class SaleInvoice(Invoice):
field_sale = models.CharField(max_length=255)
class PurchaseInvoice(Invoice):
field_purchase = models.CharField(max_length=255)
现在子模型的反向名称将是 saleinvoices
和 purchaseinvoices
。但我需要的是 sale_invoices
和 purchase_invoices
。如何做到这一点? CamelCase 之间的下划线。
最佳答案
ForeignKey
的 contribute_to_class()
以设置 related_name.class CustomFk(models.ForeignKey):
<b>def contribute_to_class(self, cls, name, private_only=False, **kwargs):
super().contribute_to_class(cls, name, private_only=False, **kwargs)
self.remote_field.related_name = "_".join(re.findall('[A-Z][^A-Z]*', cls.__name__))</b>
2. 在抽象模型中使用此自定义 FK 字段。
class Invoice(models.Model):
<b>user = CustomFk(User, related_name='%(class)s')</b>
class Meta:
abstract = True
# migrations file
operations = [
migrations.CreateModel(
name='PurchaseInvoice',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('field_purchase', models.CharField(max_length=255)),
('user', sample.models.CustomFk(on_delete=django.db.models.deletion.CASCADE,
<b>related_name='Purchase_Invoice',</b> to=settings.AUTH_USER_MODEL)),
],
options={
'abstract': False,
},
),
migrations.CreateModel(
name='SaleInvoice',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('field_sale', models.CharField(max_length=255)),
('user', sample.models.CustomFk(on_delete=django.db.models.deletion.CASCADE,
<b>related_name='Sale_Invoice',</b> to=settings.AUTH_USER_MODEL)),
],
options={
'abstract': False,
},
),
]
引用
*。 contribute_to_class()
*。 Split string with uppercase letters- Python
关于python - 如何在 Django 中自定义 related_name 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52119678/
我有几个模型,它们有一个外键返回到 Django 中的一个模型,该模型有一个外键返回到 auth User。 models.py class UserDetails(models.Model):
经过一年的 Django 经验,我发现我不太确定我使用 Django related_names正确。 想象一下我有三个模型 classA(models.Model): pass classB
根据 documentation ,相关名称必须是唯一的。再次根据 documentation 的默认值(如果开发人员未明确设置)是 FOO_set ,其中 FOO 是源模型名称。 因此,如果我有两个
我的模型发生了现场冲突: class Visit(models.Model): user = models.ForeignKey(User) visitor = models.Fo
related_name 参数对 ManyToManyField 和 ForeignKey 字段有什么用处?比如给定下面的代码,related_name='maps'的作用是什么? class Map
例子: class Route(models.Model): last_waypoint_visited = models.ForeignKey('WayPoint') class WayPo
抱歉没有描述性的标题,但我真的不知道如何措辞。 假设我有两个模型: class Person(...): name = ... #have an attribute class Family(..
我有以下型号: class A(models.Model): name = models.CharField(max_length=100) c = models.ForeignKey
我有一个用户模型: Class User(models.Model): #some fields 还有另一个 Profile Model,它由字段 -> 母亲和父亲组成。 Class Profi
我有一个抽象基础模型和 2 个继承模型,我需要强制相关名称采用特定格式。 class Animal(models.Model): legs = models.IntegerField(rela
先定义两个模型,一个是A,一个是B,是一对多的类型。 ? 1
我有这个抽象模型: class HasSystemMessage(models.Model): class Meta: abstract = True messages
我正在使用 Python(3.7) 和 Django(2.2) 开发一个项目,其中我实现了两个模型 ItemModel 和 Images 因此每个项目都会有多个图像并将项目添加到 images 模型中
我有两个非常相似的 M2M 领域模型,不知何故,我试图查询其中一个,它工作得很好,但当我尝试使用另一个模型的相同代码时,它给了我错误。我能找到的唯一区别是 lated_name 我找到了解决方法,但我
我的大部分 Django 模型都使用相同的 User Mixin,因此我想为该字段动态创建 related_name。 我希望它是 TestModel 变成 test_models 的类名,或者甚至是
当我在多个字段上使用 django Prefetch 对象 ( https://docs.djangoproject.com/en/2.2/ref/models/querysets/#prefetch
我试图在 Django 中设计一个带有一些审计字段的模型。例如创建于、创建于、更新于和更新于。这四列将在不同应用程序的所有模型中重复出现。 我的第一个问题,是否有一种方法可以放置这些列,并且可以在我每
我最近在我的 Django 模型中遇到了 ForeignKey 冲突。我需要有两个外键(owner、assigned_to)最终指向同一个模型(一个用户)。 据我了解,我需要一个 related_na
我真的很喜欢 Peewee ORM。它轻巧,易于使用,并且有很好的文档记录。我难以理解的一件事是实现外键时使用的 related_name 属性。我永远不确定该属性是否应该与表或列相关。有人可以向我确
我已经搜索了一段时间来解决我的问题,但我似乎无法解决这个问题。 所以我有两个模型: class Messages(models.Model): _db = 'somedb' id =
我是一名优秀的程序员,十分优秀!