2016-10-23 53 views
1

Djangoのドキュメントは、ModelFormを使用しているときに明確ではありません。まず、私はどのように私のurls.pyを設定するのですか?Django 1.10 AdminDateWidget()ModelFormでの使用

私は単純にこれを実行します。私はAdminDateWidgetを使用しようとしている私の見解で

from . import views as music_views 
url(r'album/add/$', music_views.AlbumCreate(), name='album-add'), 

from . import models as music_models 
from django import forms 
from django.contrib.admin.widgets import AdminDateWidget 
class AlbumCreate(forms.ModelForm): 
    class Meta: 
     releasedate = forms.DateField(widget=AdminDateWidget()) 
     model = music_models.Album 
     fields = ['artist', 'album_title', 'genre', releasedate, 'notes', 'album_logo', 'rating'] 

をマイテンプレートは次のとおりです。ここ

{% for field in form %} 
    <div class="form-group"> 
     <div class="col-sm-offset-2 col-sm-10"> 
      <span class="text-danger small">{{ field.errors }}</span> 
     </div> 
     <label class="control-label col-sm-2"> 
      {{ field.label_tag }} 
     </label> 
     <div class="col-sm-10"> 
      {{ field }} 
     </div> 
    </div> 
{% endfor %} 

私の闘争はありますページをレンダリングするときにこのエラーが発生することをご了承ください。

Exception Value:  
sequence item 0: expected str instance, DateField found 

しかし、https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/ドキュメントによると、DateFieldは許容されるデータ型の1つです。だから私は明らかにそれを何とかしていますが、それを正しく行う方法は分かりません。誰かが私にこれを助けることができますか?可能であれば、私は勉強するための基礎を好む傾向があります。一見

答えて

2

、多くの問題(テンプレート内のno形式タグ、フィールドは文字列のみを受け入れることができ、など)しかし、最も重要なAdminDateWidgetを使用したい人のためにあるようだ。余分な数があります{{form.media}}には含まれていないスクリプトを読み込む必要があります。

プロジェクト/ urls.py

from django.conf.urls import include, url 
from album.views import album_add 


urlpatterns = [ 
    url(r'album/add/$', album_add, name='album-add'), 
] 

アルバム/ models.py

from django import forms 
from django.db import models 
from django.contrib.admin.widgets import AdminDateWidget 


class Album(models.Model): 
    artist = models.CharField(max_length=30) 
    releasedate = models.DateField() 


class AlbumForm(forms.ModelForm): 
    releasedate = forms.DateField(widget=AdminDateWidget) 

    class Meta: 
     model = Album 
     fields = ['artist', 'releasedate'] 

アルバム/ views.py

from .models import AlbumForm 
from django.shortcuts import render, HttpResponse 


def album_add(request): 
    if request.method == "GET": 
     form = AlbumForm() 
     return render(request, 'album/create_album.html', {'form': form}) 
    elif request.method == "POST": 
     form = AlbumForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponse("Saved.") 
     return render(request, 'album/create_album.html', {'form': form}) 

アルバム/テンプレート/アルバム/ create_album.html

{% load static %} 

<script type="text/javascript" src="/admin/jsi18n/"></script> 
<script type="text/javascript" src="{% static 'admin/js/core.js' %}"></script> 
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script> 
<script type="text/javascript" src="{% static 'admin/js/jquery.init.js' %}"></script> 

{{ form.media }} 

<link rel="stylesheet" type="text/css" href="{% static 'admin/css/base.css' %}" /> 
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/widgets.css' %}" /> 

<form> 
    {% csrf_token %} 
    <table> 
    {{ form }} 
    </table> 
    <input type="submit" value="Go!"> 
</form> 

私は、これは誰かに役立ちます願っています!

+0

あなたは本当に投票UPに値します... – CrazyGeek