Изучаю CBV в джанго. Я хочу, чтобы пользователь мог загружать изображения на определенную карту квартиры. Так Модель была создана:Django. Получить id объекта ForeignKey в CreateView
class Photo(models.Model):
photo_path = models.ImageField(verbose_name='Фотография')
photo_user = models.ForeignKey(User, verbose_name='Агент, добавивший фото')
photo_flat = models.ForeignKey(Flat, verbose_name='Квартира')
photo_description = models.CharField(verbose_name='Описание', max_length=200, null=True, blank=True)
Исходные данные формы являются photo_user и photo_flat. Когда я пытаюсь сохранить одну или несколько фотографий через форму на странице, у меня есть AttributeError
.
'NoneType' object has no attribute 'pk'
Мои ModelForm выглядит следующим образом:
class PhotoUploadModelForm(forms.ModelForm):
class Meta:
model = Photo
fields = ['photo_path','photo_user','photo_flat','photo_description'
Мой CreateView:
class PhotoUploadView(CreateView):
form_class = PhotoUploadModelForm
def get_initial(self):
return {'photo_user': self.request.user,
'photo_flat': self.object.pk
}
def get_success_url(self):
return reverse('ha:flatdetail')
и мой urls.py
url(r'^dev/flat/(?P<flat_id>[0-9]+)/$', views_dev.flat_ajax, name='flatdetail'),
url(r'^dev/photo-update/$', views_dev.PhotoUploadView.as_view(), name='image-update')
Я понимаю ошибку, но не имеет достаточно навыки, чтобы справиться с этим. я исправлю, что self.object.pk будет идентификатором изображения, но не квартирой? Могу ли я получить идентификатор квартиры?
@Pythonista, я думаю, что я пытаюсь сделать что-то глупое, Если я хочу передать flat.id на 'photo_flat', возможно, я должен включить' flat = get_object_or_404 (Flat) 'в' def get_initial (self) '? Но он возвращает весь список квартир, которые у меня есть. Как я могу передать определенный идентификатор? Например: 'flat = get_object_or_404 (Flat, pk = flat_id)'? Но это не работает, потому что 'get_initial' не имеет' flat_id' –