我正在使用django-model-utils来帮助管理一些django模型中的继承,但我遇到了一个问题。
简而言之,我有一个外键,它通过继承类型合并了多个模型,我想知道的是,是否可以根据模型名称对查询进行排序?
在下面的示例中,是否可以对buildings QuerySet进行排序,以便公寓、餐馆和商店按该顺序显示?
models.py
class Building(models.Model):
objects = InheritanceManager()
managed_by = fields.ForeignKey(RealEstateAgent)
name = fields.CharField(max_length=100)
class Apartment(Building):
pass
class Restaurant(Building):
pass
class Shop(Building):
pass
class RealEstateAgent(models.Model):
passviews.py
def show_agents_buildings(request,agent):
buildings = models.Buildings.objects.filter(managed_by=agent).select_subclasses()
if request.GET.get("sort",None) = "building_type"
buildings = buildings.order_by("????")发布于 2014-10-26 16:54:15
在您的示例中,您使用了所谓的“多表继承”或“具体继承”,即为每个模型(建筑物、公寓、餐厅和商店)创建一个表,在父级和子级之间使用隐式OneToOneField。
如果您不打算向子建筑添加额外的字段,那么最好使用choices向Building添加一个字段type_,以选择建筑物的类型(例如,使用IntegerField,它具有自然的顺序)。然后,您可以轻松地列出按该字段排序的建筑物:
buildings = buildings.order_by('type_')https://stackoverflow.com/questions/26569012
复制相似问题