私はdjangoでCBVを研究します。 私はアパートの特定のカードに画像をアップロードすることができます。 だからモデルが作成されました:Django。 CreateViewでForeignKeyオブジェクトのIDを取得する
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です。 1つまたは複数の画像をページのフォームに保存しようとすると、AttributeError
が表示されます。
class PhotoUploadModelForm(forms.ModelForm):
class Meta:
model = Photo
fields = ['photo_path','photo_user','photo_flat','photo_description'
マイCREATEVIEW:
'NoneType' object has no attribute 'pk'
私のModelFormはこのようになります
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が写真のIDだがアパートではないことを訂正していますか? アパートのIDを取得できますか?
@Pythonista、私は愚かなことをやろうとしています。 flat_idを 'photo_flat'に渡したいのであれば、' flat get_object_or_404(Flat) 'を' def get_initial(self) 'に含めるべきでしょうか?しかし、それは私が持っているフラットの全体のリストを返します。特定のIDをどのように渡すことができますか?このように: 'flat = get_object_or_404(Flat、pk = flat_id)'?しかし、 'get_initial'は' flat_id'を持たないので動作しません –