Django在save()中创建相关对象,但不保存到数据库

时间:2019-07-05 17:15:34

标签: django python-2.7 django-models

我有一个模式Profile,其相关对象集为ProfileSiteFields(ProfileSiteFields具有要配置的FK)。

我想在基于某些业务逻辑创建新Profile时创建ProfileSiteFields。出于某种原因,相关对象的创建很好,但是没有保存到数据库中。

def save(self, *args, **kwargs):
    is_new_object = self._state.adding
    super(Profile, self).save(*args, **kwargs)

    if is_new_object:
        self._create_profile_site_fields_objects()


def _create_profile_site_fields_objects(self):
    site_ids_to_create = SiteWhiteLabeling.objects.filter(
        copy_profile_id_to_site_fields=True
    ).values_list('site', flat=True)

    for site_id in site_ids_to_create:
        site_field_obj = ProfileSiteFields.objects.create(
            profile=self,
            site_id=site_id,
            external_id=self.unique_id
        )

当我在site_field_obj循环中退出for时,一切都按预期进行-像这样:

{
    '_profile_cache': Profile : TEST NEW PROFILE 6 - Unknown,
    '_state': <django.db.models.base.ModelState object at 0x7f21644dd2d0>,
    'site_id': 7,
    'external_id': u'P3DAB584',
    'id': 23498,
    'profile_id': 28611
}

...它只是不会保存到数据库。我也尝试过这种语法

site_field_obj = ProfileSiteFields(...)
site_field_obj.save()

并从调试器中调用.save(),但是当我在ProfileSiteFields中查询对象时,它不在那儿。

关于缺少什么的任何建议吗?

更新

我知道了。问题在于地点的特殊性。

我正在为不同的站点(例如7)创建ProfileSiteFields。为了查看它们,我必须去创建它们的站点。 (例如,在站点4上,我看不到为站点7创建的对象-查询将返回0,但在站点7上它将返回1。

0 个答案:

没有答案