Django – Accessing object fields and names from class-based view
我正在尝试为 Django 编写一个基于类的视图,它每次都会使用相同的模板,而不管模型如何。目的是我可以为每个模型添加一个 urls.py 条目,而不必担心视图或模板。
这将用于显示表单,并且由于表单字段名称取决于模型类型,因此需要在视图级别检查模型并提取字段名称,以便将它们传递给通用模板。然后模板根据对象的字段名称和值生成表单。
我一直在为此苦苦挣扎。目前我正在重写 get_context_data 如下
1
2 3 4 5 6 7 8 9 10 |
def get_context_data(self, **kwargs):
context = kwargs context_object_name = self.get_context_object_name(self.object) if context_object_name: context[context_object_name] = self.object #add some custom stuff on too tempdict = [(field, field.value_to_string(self)) for field in self.object._meta.fields] #context.update({‘datafields’ : tempdict}) context.update({ ‘blarg’: ‘tester!!’}) return context |
感谢您的宝贵时间。
O
我认为你这样做是错误的。 Django 已经知道如何从模型创建表单,并且表单知道如何输出自己。因此,您可以使用
唯一困难的一点是您希望一个视图适用于多个模型。因此,与其在视图类上显式声明模型,您需要找出某种动态传递模型的方法——也许通过覆盖
如果您使用 django 1.3,则包含基于类的视图…只需使用它们并将 //’template_name//’ 属性设置为您的 “common” 名称。
https://docs.djangoproject.com/en/1.3/topics/class-based-views/
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268019.html