2017-08-21 1 views
0

一般的なビューに問題があります。私はアルバムにフォトを追加するフォームを作成しようとしていますが、私はいくつかの写真を追加しようとすることで私のアプリをテストするときに私はアルバムを作成するためにリダイレクトします(それはFotoを作成すると仮定します)。なぜそれが重要なのか、その解決策は何ですか? (たぶん一般的なことは、そのようなディスプレイを行う最善の方法ではない?)いくつかの手がかり?ありがとう!一般的なアルバムのビュー(汎用)アイテムを作成する方法 - URLの指示で問題が発生する

ps。私はそれが正しいurlを得るが、次に "views.DotailView.as_view()、name = 'detail'に行くことに気付く" views.FotoCreate.as_view、name = 'foto-add' "

- これは、詳細なHTMLからです:

<a href="{% url 'albumbum:foto-add' album.pk %}" class="btn btn-default active" role="button"> 
<span class="fa fa-plus fa-1x" aria-hidden="true"></span>&nbsp;Dodaj element do albumu</a> 

のURL:

urlpatterns = [ 
# /albumbum/ 
url(r'^$', views.IndexView.as_view(), name='index'), 

# /albumbum/<albumbum.id>/ 
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'), 

# /albumbum/add/ 
url(r'add/$', views.AlbumCreate.as_view(), name='add'), 

# /albumbum/albumbum/2/ 
url(r'albumbum/(?P<pk>[0-9]+)/$', views.AlbumUpdate.as_view(), name='albumbum-update'), 

# /albumbum/albumbum/2/delete 
url(r'albumbum/(?P<pk>[0-9]+)/delete/$', views.AlbumDelete.as_view(), name='albumbum-delete'), 

# /albumbum/2/add 
url(r'^(?P<pk>[0-9]+)/add/$', views.FotoCreate.as_view, name='foto-add'), 

-Models

class Album(models.Model): 
    autor = models.CharField(max_length=250) 
    nazwa_albumu = models.CharField(max_length=500) 
    temat = models.CharField(max_length=100) 
    opis_albumu = models.CharField(max_length=700, default="abc") 
    album_logo = models.CharField(max_length=1000) 


    def get_absolute_url(self): 
     return reverse('albumbum:detail', kwargs={'pk': self.pk}) 

    def __str__(self): 
     return self.nazwa_albumu + ' - ' + self.autor 


class Foto(models.Model): 
    albumnr = models.ForeignKey(Album, on_delete=models.CASCADE) 
    nazwa_foto = models.CharField(max_length=250, default='abc') 
    obraz = models.CharField(max_length=1000, default='abc') 

    def get_absolute_url(self): 
     return reverse('albumbum:detail', kwargs={'pk': self.pk}) 


    def __str__(self): 
     return self.nazwa_foto 

とViews.py

from django.views import generic 
from django.views.generic.edit import CreateView, UpdateView, DeleteView 
from django.core.urlresolvers import reverse_lazy 
from .models import Album, Foto 

class IndexView(generic.ListView): 
    template_name = 'albumbum/index.html' 
    context_object_name = 'object_list' 

    def get_queryset(self): 
     return Album.objects.all() 

class DetailView(generic.DetailView): 
    model = Album 
    template_name = 'albumbum/detail.html' 

class AlbumCreate(CreateView): 
    model = Album 
    fields = ['autor', 'nazwa_albumu', 'temat', 'album_logo'] 

class AlbumUpdate(UpdateView): 
    model = Album 
    fields = ['autor', 'nazwa_albumu', 'temat', 'album_logo'] 

class AlbumDelete(DeleteView): 
    model = Album 
    success_url = reverse_lazy('albumbum:index') 

class FotoCreate(CreateView): 
    model = Foto 
    fields = ['nazwa_foto', 'obraz'] 

    def form_valid(self, form): 
     album = Foto.objects.get(pk=self.kwargs.get('pk')) 
     form.instance.album = album 
     return super(FotoCreate, self).form_valid(form) 

答えて

0

私はそれを理解しました。私はパスを少し変更し、正しく動作するようになりました。私はまだ前になぜ働いていなかったのか分からないが、今は私のためにそれほど重要ではない。下記の解決策:

urlpatterns = [ 
# /albumbum/ 
url(r'^$', views.IndexView.as_view(), name='index'), 

# /albumbum/<albumbum.id>/ 
url(r'^(?P<album_id>[0-9]+)/$', views.DetailView.as_view(), name='detail'), 

# /albumbum/add/ 
url(r'albumadd/$', views.AlbumCreate.as_view(), name='album-add'), 

# /albumbum/albumbum/2/ 
url(r'albumbum/(?P<album_id>[0-9]+)/$', views.AlbumUpdate.as_view(), name='albumbum-update'), 

# /albumbum/albumbum/2/delete 
url(r'albumbum/(?P<album_id>[0-9]+)/delete/$', views.AlbumDelete.as_view(), name='albumbum-delete'), 

# /albumbum/2/add 
url(r'^(?P<album_id>[0-9]+)/fotoadd/$', views.FotoCreate.as_view(), name='foto-add'), 

] 

ありがとうございます!

関連する問題