我想知道是否可以使用其字段的别名查询Django模型?
例如:
class Book(models.Model):
pub_date = models.DateTimeField(_('Publication Date'),
...
class Magazine(models.Model):
creation_date = models.DateTimeField(_('Publication Date'),
...
我可以为这个类别名,这很棒:
my_class = Book
然后将其查询为:
my_class.objects.all()
精细!
我希望能够将Book.pub_date& Magazine.creation_date为my_pub_date,所以我可以这样做:
Book.objects.filter(my_pub_date__gt=some_date) (or my_class.objects.filter(my_pub_date__gt=some_date))
而不是:
Book.objects.filter(pub_date__gt=some_date)
由于
答案 0 :(得分:3)
不是没有经过多少努力。即使有可能,如果你想保持理智,也不要这样做。
在这种情况下,我使用(a)一个抽象基类,它保存两个模型的公共信息。
class Publication(models.Model):
pub_date = models.DateField(_('publication date'))
# other fields
class Meta:
abstract = True
class Book(Publication):
# ...
class Magazine(Publication):
# ...
或(b)具有publication_type
字段的单个模型,选择“book”和“magazine”。
或者(c)使用方法published_after
向两个模型添加自定义管理器和查询集,该方法知道要用于过滤器的属性。
我建议选择(b)书籍和杂志之间是否存在很大差异,以及(a)是否存在差异。