Django 当我想使用它时,相关对象还不在数据库中

Django 当我想使用它时,相关对象还不在数据库中,django,django-models,Django,Django Models,我目前正在为谷歌日历API编写一个包装好的django应用程序。(我的计划是让它开源,如果我能正确完成的话。) django站点的用户可以作为来宾添加到活动中,此操作将同步到google日历。以下是相关代码段: class Event(models.Model): def _convert_to_gcal_data(self): # removed some code here ... # and the interesting bit is

我目前正在为谷歌日历API编写一个包装好的django应用程序。(我的计划是让它开源,如果我能正确完成的话。)

django站点的用户可以作为来宾添加到活动中,此操作将同步到google日历。以下是相关代码段:

class Event(models.Model):

    def _convert_to_gcal_data(self):
        # removed some code here ...

        # and the interesting bit is
        for attendee in self.attendee_set.all():
            data['attendees'].append({
                'displayName': attendee.user.name,
                'email': attendee.user.email,
                'responseStatus': attendee.response_status,
            })
        return data

    def update_to_gcal(self):
        """
        Updates the remote event db from local data
        :return:
        """
        service = cal_utils.get_service(settings.GOOGLE_CAL_USER, settings.GOOGLE_CAL_CERT)
        data = self._convert_to_gcal_data()
        return service.events().update(calendarId=self.calendar.cal_id, eventId=self.ev_id, sendNotifications=False, body=data).execute()

    def register_user(self, user):
        self.attendee_set.create(user=user, response_status='accepted')
        self.update_to_gcal()
尽管在
attendee\u set
中创建用户时使用了create方法,但在
\u convert\u to \u gcal\u data
中调用
attendee\u set.all()
会返回一个空查询集。我猜create还没有提交

我怎样才能避免django的这种行为

更新


更仔细地检查我的测试,我发现只有当我从视图中调用
register\u user
方法时,所描述的行为才会出现,而不是像我在测试中那样直接调用它。

问题出在视图中。我正在对
受让人\u集
进行预回迁,这导致在受让人集更改后无法重新评估


从视图代码中删除与预取相关的内容解决了问题。

问题在视图中。我正在对
受让人\u集
进行预回迁,这导致在受让人集更改后无法重新评估


从视图代码中删除与预取相关的内容解决了这个问题。

标准Django中没有“延迟提交”。你是在appengine上运行这个,还是在某个数据库上运行,最终保持一致性?不是。我目前正在sqlite中本地运行它。我的托管实例使用postgres db,我将检查那里是否也存在问题,并将报告。postgres也存在问题。调用
register\u user
时是否保存了
self
事件?是。事件“很久以前”就存在了。在标准Django中没有“延迟提交”。你是在appengine上运行这个,还是在某个数据库上运行,最终保持一致性?不是。我目前正在sqlite中本地运行它。我的托管实例使用postgres db,我将检查那里是否也存在问题,并将报告。postgres也存在问题。调用
register\u user
时是否保存了
self
事件?是。这件事“很久以前”就存在了。