У меня есть режим Profile
, который имеет связанный набор объектов ProfileSiteFields
(у ProfileSiteFields есть FK to 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
, его там нет.
Есть предложения по отсутствию?
Обновление
Я понял это. Проблема была в специфике сайта.
Я создавал ProfileSiteFields для разных сайтов (например, 7). Чтобы просмотреть их, мне нужно было зайти на сайт, для которого они были созданы. (Например, на сайте 4 я не смог увидеть объект, созданный для сайта 7 - запрос вернул бы 0, но на сайте 7 он вернул бы 1.