给定一个Django模型,我试图列出它的所有字段.我已经看到了一些使用_meta模型属性执行此操作的示例,但是meta前面的下划线是否表示_meta属性是私有属性,不应该直接访问?...例如,因为_meta的布局将来可能会改变而不是一个稳定的API?
_meta是这个规则的例外吗?它是否稳定并且可以使用,或者它被认为是不好的做法?或者是否有函数或其他方法来反省模型的字段而不使用_meta属性?下面是一些链接的列表,显示了如何使用_meta属性执行此操作
任何建议都非常感谢.
如何在管理界面中将模型完全只读?这是一种日志表,我使用管理功能进行搜索,排序,过滤等,但不需要修改日志.
如果这看起来像重复,这不是我想要做的:
我创建了一个模型,它将自动显示模型中的所有字段并将其显示在管理页面上.
现在,我有一个问题,我想在同一行上有两个字段,为此我必须在ModelAdmin指定字段集:
fieldsets = (
(None, {
'fields': (('firstname', 'lastname'),)
}),
)
Run Code Online (Sandbox Code Playgroud)
我必须指定所有字段吗?因为数据库中有许多字段需要指定.
也许是一个简单的问题,但我不知道如何总结它,我会找到答案.
是否可以打印出所有可用的模型字段?
例如,在iPython中,我可以导入模型,只需编写模型名称,选项卡将显示模型具有的所有可用字段.
是否可以在不使用某种shell的情况下在代码中执行此操作?
我想使用某种命令(ea print_fields(self))并获取模型中的内容.
好吧,我认为问题解释了.
我有两个Django模型的实例,我想知道哪些字段不同.
你怎么能以聪明的方式做到这一点?
干杯!
我想执行一个简单的查询,如:
select *,count('id') from menu_permission group by menu_id
Run Code Online (Sandbox Code Playgroud)
在django格式中我尝试过:
MenuPermission.objects.all().values('menu_id').annotate(Count('id))
Run Code Online (Sandbox Code Playgroud)
它只选择menu_id.查询执行:
SELECT `menu_permission`.`menu_id`, COUNT(`menu_permission`.`id`) AS `id__count` FROM `menu_permission` GROUP BY `menu_permission`.`menu_id`
Run Code Online (Sandbox Code Playgroud)
但我也需要其他领域.如果我尝试:
MenuPermission.objects.all().values('id','menu_id').annotate(Count('id))
Run Code Online (Sandbox Code Playgroud)
它按条件添加'id'.
GROUP BY `menu_permission`.`id`
Run Code Online (Sandbox Code Playgroud)
结果我没有得到预期的结果.我如何通过组只获得一列所有对象?
有没有一种有效的方法从函数中排除字段values()或values_list.
例如
Videos.objects.filter(id=1).get().values()
Run Code Online (Sandbox Code Playgroud)
我想从此查询集中排除该字段duration.
我知道我可以在结果中指定字段,但是如果我只需要一个字段,那该怎么办.就像在这种情况下,如果我有20个字段,如果我只想要一个不是.
谢谢
给定一个models.py:
class Partner(models.Model):
... (fields irrelevant to this example)
class Lecture(models.Model):
... (other fields not relevant to this example)
partner models.ForeignKey(Partner)
Run Code Online (Sandbox Code Playgroud)
我有每个的ListView和每个的DetailView(工作正常)。
问题是在“ Partner DetailView”页面上,我有“讲座”列表。在很多情况下,此列表可能会很长(例如,> 200),并且涉众希望对其进行分页。我在ListView页面上的分页没有问题(很简单),但是我似乎无法在合作伙伴的DetailView页面上弄清楚如何在他们的演讲列表上进行分页。
我希望在Django文档代码中看到类似以下内容的代码:
class PartnerDetailView(DetailView):
model = Partner
paginate_using = Lecture # (or something like self.lecture ?)
paginate_by = 20
Run Code Online (Sandbox Code Playgroud)
因此,DetailView将作用于单个Partner对象,但将(轻松)允许从Lecture FK结果中进行分页。
有支持吗?还是会需要更多的自定义视图代码(也许将** kwargs中的'page'变量放入get_context_data()并基于该变量创建子集)?
在CBV下,这似乎是非常普遍的情况,所以我很困惑为什么搜索没有找到任何示例。
更新:我应该想到,执行此操作的一种简单方法是,将一个“页面”片段添加到引用DetailView的url()条目中,然后使用它在FK对象上创建分页的子集。
请注意,这也是解决“如何从FormView中分页结果”问题的可行方法。
我试图找出从Field对象获取模型字段名称的推荐方法.
它似乎是field.name有效的(我从一些SO帖子中发现)如果field是对象名称,但令人惊讶的是它在文档中没有提到它,所以想知道它仍然是最好的方式还是我错过了一些明显的东西?
django ×9
python ×3
django-admin ×2
debugging ×1
detailview ×1
django-orm ×1
django-views ×1
metamodel ×1
pagination ×1
printing ×1
readonly ×1