2014-03-03 21 views
4

目前我有一個腳本,允許用戶使用表單添加新酒店這裏是腳本。如何修復Meta.fields不能是字符串。你的意思是打字:('姓名')

我收到以下錯誤異常 AddHotelForm.Meta.fields不能是字符串。你的意思是輸入:('name',)?

請求方法:GET 請求URL:8000 /酒店/新 Django的版本:1.6.2 異常類型:類型錯誤 異常值:

AddHotelForm.Meta.fields不能是一個字符串。你的意思是輸入:('name',)?

異常地點:/usr/local/lib/python2.7/dist-packages/django/forms/models.py在,線路261

我似乎無法得到它I'have檢查它好幾次,似乎沒有找到解決辦法。

views.py

from django.shortcuts import render_to_response 
from forms import AddHotelForm 
from django.http import HttpResponseRedirect 
from django.core.context_processors import csrf 
from hotel.models import hotel 

def create(request): 

    if request.POST: 

     form = AddHotelForm(request.POST) 

     if form.is_valid(): 

      form.save() 

      return HttpResponseRedirect('/articles/all/') 

    else: 

     form = AddHotelForm() 

    args = {} 
    args.update(csrf(request)) 

    args['form'] = form 

    return render_to_response('add_hotel.html', args) 

models.py

from django.db import models 
from user.models import user 


class hotel(models.Model): 

    publisher = models.ForeignKey(user) 
    name = models.CharField(max_length=100) 
    slug = models.SlugField(max_length=100) 
    creation_date = models.DateField(auto_now_add=True) 

    def __unicode__(self): 
     return self.name 

forms.py

from django import forms 
from models import hotel 


class AddHotelForm(forms.ModelForm): 

    class Meta: 
     models = hotel 
     fields = ('name') 

add_hotel.html

{% block content%} 
<html> 
<head> 
    <title></title> 
    <style type="text/css"> 
     li { 
      padding:5px; 
      margin-bottom: 5px; 
      list-style: none; 

     } 

     .errorlist { 
      background-color: red; 
      color:white; 
      padding: 1px; 
      width:150px; 
      margin-bottom: 5px; 
      font-size: 12px; 
      font-family: arial, serif; 

     } 

     label { 
      display: block; 
      font-size: 12px; 
      font-family: arial, serif; 
     } 
    </style> 
</head> 
<body> 
    <form action="/hotel/new/" method="post"> 
     {% csrf_token %} 
     <uL style="display:block;"> 
      {{form.as_ul}} 
     </ul> 
     <input type="submit" name="submit" value="Create Hotel"> 
    </form> 
</body> 
</html> 
{% endblock%} 
+0

錯誤不僅表明問題是什麼,而且還告訴你*正確*如何解決它。你有沒有嘗試遵循這個建議? –

回答

15

所以這個問題似乎正是在錯誤信息中所陳述的。

您的問題是這樣的:

("name") 

是不一樣的:

("name",) 

試試:

>>> type(("name")) 
<type 'str'> 
>>> type(("name",)) 
<type 'tuple'> 

因此,要解決它改變你的形式定義:

class AddHotelForm(forms.ModelForm): 

    class Meta: 
     models = hotel # This should be "model" not "models". 
     fields = ('name',) 
+0

我更新了錯誤,並將逗號添加到forms.py,但現在我得到「ModelForm沒有指定模型類」 並指向form = AddHotelForm() – eddwinpaz

+1

看看我的編輯。您需要將「模型」更改爲「模型」。 – Reite

+0

感謝它的工作。我從來沒有想過會是這樣。再次感謝.. – eddwinpaz

相關問題