我是Django的新手,正在努力寻求一些动态解决方案。我正在尝试创建一个应用程序,使用户可以从UI创建表并将数据从平面文件导入此表,然后用户可以通过单击url浏览该数据(例如,如果用户为雇员创建表,则用户应该能够为雇员提供这样的网址:localhost / employee)。稍后,我将处理导入部分,但现在,我正在尝试找到一种浏览数据的解决方案。下面的查询几乎可以做到这一点。但是我不能使用别名而不是列名。有什么办法可以建立类似动态的东西吗?
def employee(request):
entries = Employee.objects.annotate(First Name=F('FirstName')). only('FirstName','Email')
print(entries)
return render_to_response('employee.html',{'employees': serializers.serialize("json",entries, fields=('First Name','Email'))})
以上查询给我以下结果。我这里只有电子邮件信息。因此没有名字,因为注释不起作用。
[{"model": "client.employee", "pk": 1, "fields": {"Email":"employe1@gmail.com"}}]
答案 0 :(得分:0)
根据this ticket,django不允许序列化非模型字段。因此,您需要覆盖Serailizer,这样您可以尝试:
将自定义序列化程序(将覆盖原始json序列化程序)写入一个单独的文件,即 custom_serializer.py
String name = nameField.getText();
Team team = (Team) teamComboBox.getSelectedItem();
// I only want this to run, if the team doesn't already have a coach
Coach coach = new Coach(name, team);
在视图内部,导入该CustomSerializer并使用它。例如
# custom_serializer.py
from django.core.serializers.json import Serializer
class CustomSerializer(Serializer):
def end_object(self, obj):
for field in self.selected_fields:
if field == 'pk' or field=='id': # primary key field
continue
elif field in self._current.keys():
continue
else:
try:
self._current[field] = getattr(obj, field)
except AttributeError:
pass
super(CustomSerializer, self).end_object(obj)