Python:查询集没有属性'start_time'

时间:2012-09-13 13:57:05

标签: python django

我的会议模型就在这里

class Meeting(models.Model):
    name = models.CharField(max_length=200)
    meetingID = models.CharField(max_length = 50) 
    venue = models.ForeignKey('MeetingRoom',related_name ='meetingroom',null = True,blank = True)   # whether One Time or Recurring
    status =models.IntegerField(null=True, blank=True)
    recurring_time = models.CharField(max_length=50)              # (Recurring date schedule information)
    attendee_passwd = models.CharField(max_length=100)
    moderator_passwd = models.CharField(max_length = 100)
    date_created = models.DateTimeField(auto_now=True)               # it should be auto fill 

    meeting_datetime = models.DateTimeField(default=datetime.datetime.now,blank=True, null=True)
    timezone = models.CharField(max_length = 50)
    reminder = models.BooleanField()
    start_time = models.CharField(max_length=100)
    end_time = models.CharField(max_length=100)
    meeting_duration = models.CharField(max_length=100)

    duration = models.CharField(max_length=20)
    created_by = models.ForeignKey('User',related_name ='meetingroom_created')
    sms_no = models.IntegerField()  #participant will call on this number   Unique for all users and participant 
    conferenceID = models.IntegerField(blank=True, null=True)
    meeting_logout_url = models.CharField(max_length=100)
    max_participants = models.IntegerField(blank=True, null=True)
    participants = models.ForeignKey('Participant',related_name = 'parts_of_meetingroom',null = True)

    def disable_from_meeting(self):
        try:
            get_participant = Participant.objects.filter(meeting_id =self.id)
            for get_pp in get_participant:
                get_pp.status = 0
                get_pp.save()
        except:
            LOG_INFO('Organization %s has no PARTICIPANT IN %Ssuser ', self.id)
            pass  
    class Meta:
        app_label = 'testsite'

现在在我的观点中,我试图将start_time存储在字典中,如

            get_all_user_of_org = User.objects.filter(org_name =get_org)

            for user_id in get_all_user_of_org:
                mee_data = {} 
                get_meetings = Meeting.objects.filter(created_by = user_id.id)
                print dir(get_meetings)
                mee_data['start_time'] = get_meetings.start_time 
              #  mee_data['end_time'] = get_meetings
                getall.append(mee_data) 

然后我为什么得到

 AttributeError: 'QuerySet' object has no attribute 'start_time'

此处没有理由显示此错误,因为start_time是Meeting表的属性

请帮助我,我可能做错了什么?

2 个答案:

答案 0 :(得分:1)

Meeting.objects.filter未返回Meeting - 它正在返回QuerySet次会议。您可以遍历QuerySet以获得每次会议的会议时间:

for user_id in get_all_user_of_org:
    mee_data = {} 
    get_meetings = Meeting.objects.filter(created_by = user_id.id)
    print dir(get_meetings)
    for meeting in get_meetings:
        do_something_with(meeting.start_time)

你必须意识到你在这里正在处理多个会议,他们可能会有不同的开始时间。在这种情况下,你最清楚你想要做什么。可能是这样的吗?

for user_id in get_all_user_of_org:
    get_meetings = Meeting.objects.filter(created_by = user_id.id)
    for meeting in get_meetings:
        mee_data = {} 
        mee_data['start_time'] = meeting.start_time
        getall.append(mee_data)

答案 1 :(得分:0)

你正在使用

get_meetings = Meeting.objects.filter(created_by = user_id.id)

此返回类型filter是一个查询集对象,可以包含一个或多个对象。 要获得start_time的所有meetings的{​​{1}},您应该使用

之类的内容
user