python - 带有模型的 Django QuerySet

标签 python django python-2.7 django-1.5

我是 Django 的新手,正在尝试了解如何将查询集与模型结合使用。

Model
class Channel(models.Model):
    name = models.CharField(max_length=200)
    accountid = models.CharField(max_length=34)

    def get_channel_list(self):
        return self.get_queryset().name()

如果帐户 ID 匹配,我想做的是将整个名称列作为数组返回。我想使用 models.py 中的一个函数,但我还没有找到满足我正在寻找的内容的在线示例。

即使没有过滤器,上述内容也不会返回任何数据。

在正确方向上的任何一点都会令人惊叹。

最佳答案

使用objects.filterclassmethod:

class Channel(models.Model):
    name = models.CharField(max_length=200)
    accountid = models.CharField(max_length=34)

    @classmethod
    def get_channel_list(cls, acc):
        return cls.objects.filter(accountid=acc).values_list('name', flat=True)

在 django 中还有另一种技术可以做这样的事情——定义自定义管理器来建模。 (例如,您有多个 Channel 模型继承自一个基本代理模型,并且您希望将相同的 get_channel_list 函数应用于某些模型 - 自定义管理器是可行的方法):

class ChannelManager(models.Manager):
    def get_channel_list(self, acc):
        return self.filter(accountid=acc).values_list('name', flat=True)

class Channel(models.Model):
    name = models.CharField(max_length=200)
    accountid = models.CharField(max_length=34)

    objects = ChannelManager()

关于python - 带有模型的 Django QuerySet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20766224/

相关文章:

python - 滚动到 python selenium 中的特定元素

python - 从文本文件创建字典

python - Django TestCase 不保存我的模型

python - 如何使用opencv(python),simplecv或pil进行图像拼接?

python - 仅将一列从字符串转换为 int

Python "Error ' dict' 对象没有属性 'load' "

python - 在 HttpResponse 中返回一个 python bytearray

django - 从模板调用模型上的方法

python - 从元组列表中获取匹配项的值

python - 保留文本结构信息 - pyparsing