我是 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.filter
和classmethod
:
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/