【发布时间】:2021-11-13 19:39:40
【问题描述】:
我希望能够使用基本模型创建一个对象,但根据对象的字段将该对象实际创建为代理类。
例如,对于以下模型:
class Animal(models.Model):
species = models.CharField()
class Cat(Animal):
class Meta:
proxy = True
class Dog(Animal):
class Meta:
proxy = True
我该如何设置它,以便
cat = Animal.objects.create(species="cat")
dog = Animal.objects.create(species="dog")
Animal.objects.all() # Returns queryset of [cat, dog]
Cat.objects.all() # Returns queryset of [cat]
Dog.objects.all() # Returns queryset of [dog]
编辑: 我会对这两种类型的解决方案感兴趣:
a) 首先将对象创建为Animal,然后再转换为代理类
b) 对象直接创建为代理类
(不幸的是,解决方案类型 A 可能与我的用例最相关)
【问题讨论】:
标签: django django-models django-queryset django-managers