相关疑难解决方法(0)

从Django QuerySet获取SQL

如何从QuerySet对象获取Django将在数据库中使用的SQL?我正在尝试调试一些奇怪的行为,但我不确定哪些查询会进入数据库.谢谢你的帮助.

python sql django django-queryset

279
推荐指数
5
解决办法
14万
查看次数

按属性过滤

是否可以按模型属性过滤Django查询集?

我的模型中有一个方法:

@property
def myproperty(self):
    [..]
Run Code Online (Sandbox Code Playgroud)

现在我想通过这个属性过滤,如:

MyModel.objects.filter(myproperty=[..])
Run Code Online (Sandbox Code Playgroud)

这有点可能吗?

python django orm

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

Django模型字段getter/setter

django模型的领域有吸气剂和二传手吗?

例如,我有一个文本字段,我需要在它被保存之前进行字符串替换(在管理面板中,对于插入和更新操作),并在每次读取时进行另一个不同的替换.这些字符串替换是动态的,需要在保存和读取时完成.

因为我使用的是python 2.5,所以我不能使用python 2.6 getters/setters.

有帮助吗?

django django-models

21
推荐指数
4
解决办法
2万
查看次数

Django模型和Python属性

我试图用python属性设置一个Django模型,如下所示:

class Post(models.Model):
    _summary = models.TextField(blank=True)
    body = models.TextField()

    @property
    def summary(self):
        if self._summary:
            return self._summary
        else:
            return self.body

    @summary.setter
    def summary(self, value):
        self._summary = value

    @summary.deleter
    def summary(self):
        self._summary = ''
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,在控制台中我可以与摘要属性进行交互.但是当我尝试用它做任何事情时,就像Post(title="foo", summary="bar")它一样,它会引发一种契合.有没有办法让Django与Python属性玩得很好?

python django django-models

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

Django @property计算模型字段:FieldError:无法解析关键字

我正在使用@Yauhen Yakimovich在此问题中使用的方法:

属性对Django模型字段有效吗?

具有模型字段,该模型字段是对不同模型的计算。

问题:

FieldError: Cannot resolve keyword 'rating' into field. Choices are: _rating
Run Code Online (Sandbox Code Playgroud)

当我尝试访问它时,rating模型字段inst被我的rating属性正确隐藏和覆盖,导致错误。

我的模特:

class Restaurant(models.Model):    
    ...
    ...
    @property
    def rating(self):
        from django.db.models import Avg
        return Review.objects.filter(restaurant=self.id).aggregate(Avg('rating'))['rating__avg']
Run Code Online (Sandbox Code Playgroud)

Yauhen的回答中的模型:

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

    @property
    def foo(self):
        if self.bar:
            return self.bar
        else:
            return self.__foo

    @foo.setter
    def foo(self, value):
        self.__foo = value
Run Code Online (Sandbox Code Playgroud)

关于如何正确隐藏rating字段和定义@property技术的任何想法?

更新:

我正在使用查询order_by()来呼叫ratingorder_by()在数据库级别,并且不了解我的财产。灵魂,请使用Python进行排序:

sorted(Restaurant.objects.filter(category=category[0]), key=lambda …
Run Code Online (Sandbox Code Playgroud)

python django

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

Django空场后备

我有一个保存用户地址的模型.此模型必须具有first_name和last_name字段,因为有人希望将地址设置为收件人(如他的公司等).我想要实现的是:

  • 如果地址中的fist_name/last_name字段已填充 - 只返回该字段
  • 如果地址中的fist_name/last_name字段为空 - 从指向正确的django.auth.models.User的外键中获取相应的字段数据
  • 我希望将其视为字段查找中存在的普通django字段
  • 我不想创建一个方法,因为它是一个重构,并且Address.first_name/last_name在应用程序的不同位置使用(也在模型表单等中),所以我需要这个尽可能顺利,否则我在很多地方都要修补一下

感谢帮助 :)

python django field django-models models

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

一般使用Django的属性装饰器渴望加载和急切加载

在Django中是否可以使用预先加载属性装饰器?

我的代码作为例子

class Player(models.Model):
    roles = models.ManyToManyField(Role, related_name='players')

    @property
    def role(self):
         return ", ".join([r.name for r in self.roles.all().order_by('name')])
Run Code Online (Sandbox Code Playgroud)

使用属性输出播放器角色时,每次都会运行查询.

实际上我仍然不知道Django的负载是如何的.我找不到任何关于它的好文档.

谢谢

python django django-models python-decorators

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