gpt4 book ai didi

python - Django 抽象模型设置带有下划线的 related_name

转载 作者:太空狗 更新时间:2023-10-29 20:29:14 35 4
gpt4 key购买 nike

我有一个抽象基础模型和 2 个继承模型,我需要强制相关名称采用特定格式。

class Animal(models.Model):
legs = models.IntegerField(related_name='%(class)s')
habitat = models.ForeignKey(Habitats, related_name='%(class)s')

class DogAnimal(BaseModel):
name = models.CharField(max_length=20, related_name='dog_animal')

class CatAnimal(BaseModel):
name = models.CharField(max_length=20, related_name='cat_animal')

通常,related_name = '%(class)s' 将分别产生 catanimal 和 doganimal。

我需要这样的带下划线的值:dog_animal、cat_animal

这是我需要这样做的“原因”- 旧版。这些模型不是用基类组织的——因此最初指定的 related_name 是“dog_animal”和“cat_animal”。更改此设置需要大量工作。

最佳答案

一个解决方案可能是不为 habitat 指定 related_name 并为所有 child 定义一个 default_related_name:

class Animal(models.Model):

class Meta:
abstract = True

habitat = models.ForeignKey(Habitats, on_delete=models.CASCADE)


class DogAnimal(Animal):

class Meta:
default_related_name = 'dog_animal'


class CatAnimal(Animal):

class Meta:
default_related_name = 'cat_animal'

关于python - Django 抽象模型设置带有下划线的 related_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31606894/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com