Ich studiere CBV in Django. Ich möchte, dass ein Benutzer Bilder auf eine bestimmte Karte einer Wohnung hochladen kann. So wurde das Modell erstellt:Django. Erhalte die ID des ForeignKey-Objekts in 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)
Die ersten Daten des Formulars sind photo_user und die photo_flat. Wenn ich versuche, ein oder mehrere Bilder über ein Formular auf der Seite zu speichern, habe ich AttributeError
.
'NoneType' object has no attribute 'pk'
Meine Modelform sieht wie folgt aus:
class PhotoUploadModelForm(forms.ModelForm):
class Meta:
model = Photo
fields = ['photo_path','photo_user','photo_flat','photo_description'
Mein Create:
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')
und meine 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')
ich den Fehler zu verstehen hat, aber nicht genug Fähigkeiten, damit umzugehen. bin ich richtig, dass self.object.pk wäre die ID des Bildes, aber nicht die Wohnung? Kann ich die ID der Wohnung bekommen?
@Pythonista, ich denke, dass ich versuche etwas Dummes zu tun, Wenn ich flat.id zu 'photo_flat' übergeben will, sollte ich' flat = get_object_or_404 (Flat) 'in' def get_initial (self) 'einschließen? Aber es gibt eine ganze Liste von Wohnungen zurück, die ich habe. Wie kann ich bestimmte ID weitergeben? Wie folgt: 'flat = get_object_or_404 (Flat, pk = flat_id)'? Aber es funktioniert nicht, weil 'get_initial' nicht' flat_id' hat –