使用优秀的Django-Devserver我在我的代码中找到各种有趣和意外的SQL调用.我想找到调用的来源,所以我正在寻找一种方法来获取日志或打印出在Python shell中由Django ORM生成的所有SQL调用.也就是说,当我通过Python shell进行Django ORM调用时,我希望看到打印出来或记录的结果SQL.
我注意到几个解决方案将日志信息添加到html页面.是否有一种简单的方法转储到命令行?
在Django 1.1中,我能够使用QuerySet这种表示法生成a 使用的SQL :
QuerySet.query.as_sql()
Run Code Online (Sandbox Code Playgroud)
在Django 1.2中,这提升为AttributeError.
有人知道Django 1.2相当于那种方法吗?
谢谢
在我的Django项目中,当我查询数据时,我得到以下错误:
django.db.utils.OperationalError:(1052,"字段列表中的列'名称'含糊不清")
使用:
http://localhost:8000/api/physicalserver/list/?switchesport__bandwidth=10
Run Code Online (Sandbox Code Playgroud)
但如果我使用:
http://localhost:8000/api/physicalserver/list/?switches__id=xxx
Run Code Online (Sandbox Code Playgroud)
它会工作正常.
我的ListAPIView代码:
class PhysicalServerListAPIView(ListAPIView):
serializer_class = PhysicalServerListSerializer
permission_classes = [AllowAny]
pagination_class = CommonPagination
def get_queryset(self):
query_params = self.request.query_params
filters = {'{}__contains'.format(key): value
for key, value in query_params.items()
}
qs = PhysicalServer.objects.filter(**filters)
return qs.extra(select={'length':'Length(name)'}).order_by('length', 'name')
Run Code Online (Sandbox Code Playgroud)
我的序列化代码:
class PhysicalServerListSerializer(ModelSerializer):
bandwidth = serializers.SerializerMethodField()
class Meta:
model = PhysicalServer
fields = "__all__"
depth = 1
def get_bandwidth(self, obj):
return obj.switchesport.bandwidth
Run Code Online (Sandbox Code Playgroud)
我的物理服务器模型:
class PhysicalServer(models.Model):
name = models.CharField(max_length=32)
switches = models.ForeignKey(to=Switches, on_delete=models.DO_NOTHING)
physical_server_model = models.ForeignKey(to=PhysicalServerModel, null=True, on_delete=models.DO_NOTHING)
switchesport = models.OneToOneField(to=SwitchesPort, …Run Code Online (Sandbox Code Playgroud) 我正在考虑为我的django Web应用程序创建一个日志系统.Web应用程序的使用非常全面(涵盖了业务流程的所有方面),因此我想跟踪发生的每个事件.具体来说,我想记录每个运行的视图而不仅仅是"主要"视图,并且可能记录视图中执行的内容.
当我处于测井系统的"想法"阶段时,我很快就遇到了一些问题,让我不确定如何继续.以下是我的主要问题:
这是我在这一点上的主要想法.关于这方面的任何建议?
谢谢