相关疑难解决方法(0)

如何查看Django正在运行的原始SQL查询?

有没有办法在执行查询时显示Django正在运行的SQL?

sql django

272
推荐指数
12
解决办法
15万
查看次数

属性是否适用于django模型字段?

我认为问这个问题的最好方法是使用一些代码......我可以这样做吗?(编辑:答案:不)

class MyModel(models.Model):    
    foo = models.CharField(max_length = 20)    
    bar = models.CharField(max_length = 20)  

    def get_foo(self):  
        if self.bar:  
            return self.bar  
        else:  
            return self.foo  

    def set_foo(self, input):  
        self.foo = input  

    foo = property(get_foo, set_foo)  
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做:

是的,你必须这样做:

class MyModel(models.Model):
    _foo = models.CharField(max_length = 20, db_column='foo')
    bar = models.CharField(max_length = 20)

    def get_foo(self):
        if self.bar:
            return self.bar
        else:
            return self._foo

    def set_foo(self, input):
        self._foo = input

    foo = property(get_foo, set_foo)
Run Code Online (Sandbox Code Playgroud)

注意:通过将db_column传递给模型字段,可以将列名保留为数据库中的'foo'.当您处理现有系统并且不希望无缘无故地进行数据库迁移时,这非常有用

python django model properties

37
推荐指数
3
解决办法
3万
查看次数

django将queryset.values()序列化为json

我有一个包含许多字段的模型,但是对于这个问题,我只需要其中的3个字段.当我尝试序列化一个.values集合时,我得到一个例外

queryset = myModel.objects.filter(foo_icontains=bar).values('f1', 'f2', 'f3')
serialized_q = serializers.serialize('json', queryset, ensure_ascii=False)
Run Code Online (Sandbox Code Playgroud)

python django django-models

26
推荐指数
4
解决办法
5万
查看次数

使用""打印Django QuerySet SQL

您可以按如下方式打印查询集的SQL:

print str(queryset.query)
Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,这会删除引号,因此您得到:

SELECT `tableA`.`fieldA` FROM `fieldA` WHERE `tableA`.`fieldB` = Foo
Run Code Online (Sandbox Code Playgroud)

代替:

SELECT `tableA`.`fieldA` FROM `fieldA` WHERE `tableA`.`fieldB` = "Foo"
Run Code Online (Sandbox Code Playgroud)

注意到失踪 ""

如何纠正?

sql django django-queryset

8
推荐指数
2
解决办法
1767
查看次数

Django ORM经历多个多对多关系的方式

亲爱的人们试图帮助他人,

我试图找出如何让Django为我做一个连接,而无需编写自定义SQL.

假设我有以下型号

class Parent(models.Model): 
  name =  models.CharField()
  children = models.ManyToManyField(Child, through="Parent_Child", related_name="parents")

class Parent_Child(models.Model):
  parent = models.ForeignKey(Parent, related_name='attached_children')
  child = models.ForeignKey(Child,  related_name='attached_parents')

class Child(models.Model): 
  name = models.CharField() 
  toys = models.ManyToManyField(Toy, hrough="Child_Toy", related_name="toy_owners")

class Child_Toy(models.Model): 
  child = models.ForeignKey(Child, related_name='attached_toys') 
  toy =  models.ForeignKey(Toy, related_name='toy_owner')

class Toy(models.Model): 
  name = models.CharField
Run Code Online (Sandbox Code Playgroud)

父母可以有多个孩子.一个孩子可以有多个父母.孩子可以拥有多个玩具.玩具可以由多个孩子拥有.

我想获得父母子女拥有的所有玩具清单.

所以,我可以做以下事情: parent.children.all()child.toys.all()

我想做的就是parent.children.toys.all() 当我尝试这样做时,我得到:AttributeError: 'ManyRelatedManager' object has no attribute 'toys'.我理解错误 - parent.children返回多个记录.这是预料之中的.我无法弄清楚的是如何给Django提示我希望它为其查询添加一个额外的连接.

有没有办法在Django中进行此连接,或者我是否需要转到自定义SQL才能执行此操作?

请注意:以上只是为了说明我的问题,我使用的实际模型并不相关.我的问题是试图弄清楚如何在Django中加入多个M2M关系,而不必诉诸SQL.

我提前感谢您的帮助.谢谢!

python django

7
推荐指数
2
解决办法
3856
查看次数

随机错误"在查询期间与MySQL服务器的连接丢失"与Django 1.3

这个线程没有太大帮助:在查询期间丢失了与MySQL服务器的连接.

我将max_allowed_pa​​cket增加到16M,max_connections增加到9999.但是,我仍然收到此错误:

  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py", line 107, in _result_iter
    self._fill_cache()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py", line 772, in _fill_cache
    self._result_cache.append(self._iter.next())
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py", line 273, in iterator
    for row in compiler.results_iter():
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 680, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 735, in execute_sql
    cursor.execute(sql, params)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/backends/mysql/base.py", line 86, in execute
    return self.cursor.execute(query, args)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
OperationalError: (2013, 'Lost connection to MySQL server …
Run Code Online (Sandbox Code Playgroud)

python mysql django

1
推荐指数
1
解决办法
6118
查看次数