[英]django object get two fields into a list from a model
这是我的模特
class pdUser(models.Model):
Name = models.CharField(max_length=200)
Mobile = models.CharField(max_length=200)
PagerDutyID = models.CharField(max_length=200)
PagerDutyPolicyID = models.CharField(max_length=200)
PagerDutyPolicy = models.CharField(max_length=200)
想要我能够做的是通过PagerDutyPolicy和PagerDutyPolicyID进行分组,并将其作为自己的对象返回,仅使用唯一值
所以例如
Name: bob
PagerDutyPolicyID: 232
PagerDutyPolicy: Team 1
Name: Bill
PagerDutyPolicyID: 232
PagerDutyPolicy: Team 1
Name: Fred
PagerDutyPolicyID: 145
PagerDutyPolicy: Team 2
我需要的是一个只有一个对象
PolicyID: 145
Policy: Team 2
PolicyID: 232
Policy: Team 1
在其中,我该怎么做?
谢谢
这样的事情:
id_teams = pdUser.objects.values_list('id', 'team', flat=True)
id_teams = set(id_teams)
import collections
IDTeam = collections.namedtuple('IDTeam', ['id', 'team'])
output = [IDTeam(id=id, team=team)
for id,team in id_teams]
你需要两个模型,它们之间有一个外键,例如:
from django.contrib.auth.models import User
class PagerDutyPolicy(models.Model):
# the model automatically gets an id field
policy_name = models.CharField(max_length=200)
class PagerDuty(models.Model):
# I'm assuming you wanted these to be related to users who can log in..
user = models.ForeignKey(User)
mobile = models.CharField(max_length=200)
policy = models.ForeignKey(PagerDutyPolicy)
要获得所有政策:
PagerDutyPolicy.objects.all()
要为bob创建一个新的PagerDuty
对象,在团队1中对其进行操作:
PagerDuty.objects.create(
user=User.objects.get(username='bob'), # or create a new user
mobile='...',
# policy=PagerDutyPolicy.objects.get(policy_name='Team 1') # or..
policy=PagerDutyPolicy.objects.get(id=232)
)
如果您db_index=True
policy_name
查找策略,则该字段在模型定义中也应该具有db_index=True
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.