2012-04-26 89 views
2

出於某種原因,我創建的表單將數據插入localhost上的數據庫。我將它部署到gae,表單可以工作,但是沒有任何內容插入到數據存儲中?數據存儲在本地主機上,但不在gae數據存儲上?

這裏是我的模型文件:

from django.db import models 
# from django.contrib.auth.models import User 

# Create your models here. 
class Company(models.Model): 
    id = models.IntegerField(primary_key=True); 
    name = models.CharField(max_length=100, null=True); 
    address = models.CharField(max_length=100, null=True); 
    phone = models.CharField(max_length=15, null=True); 
    website = models.CharField(max_length=50, null=True); 
    email = models.EmailField(max_length=50, null=True); 
    hiring = models.BooleanField(default=False);  
    latitude = models.DecimalField(max_digits=20, decimal_places=10, null=True); 
    longitude = models.DecimalField(max_digits=20, decimal_places=10, null=True); 
    approved = models.BooleanField(default=False); 
    date_added = models.DateTimeField(auto_now_add=True); 
    about_us = models.TextField(max_length=500, null=True); 

我的形式:

from django import forms 
from company.models import Company 

class SignUpCompanyForm(forms.ModelForm): 
    class Meta: 
     model = Company; 

我的HTML表單:

{% block content %} 
    <div id="content"> 
     <!-- a form for sign up --> 
     <form id="sign" action="/sign_up_company" method="post"> 
      <table>{{ form }}</table> 
      <input type="submit" value="Sign Up" /> 
     </form> 
    </div> 
{% endblock %} 

我的看法功能:

def sign_up(request): 
    if request.method == 'POST': 
     form = SignUpCompanyForm(request.POST); 
     if form.is_valid(): 
      company = form.save(commit=False); 
      company.save(); 
      # company.put(); 

    return HttpResponseRedirect('/confirmation'); 

表單的操作映射到「sign_up」。

當我運行 「蟒蛇manage.py syndb」 我得到:

C:\Users\Joe\Desktop\test>python manage.py syncdb 
Creating tables ... 
Installing custom SQL ... 
Installing indexes ... 
No fixtures found. 
Exception AttributeError: "'NoneType' object has no attribute 'mkstemp'" in <bound method DatastoreFileStub.__del__ of <google.appengine.api.datastore_file_stub 
.DatastoreFileStub object at 0x029874F0>> ignored 

我的app.yaml:

application: app_name 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: yes 

builtins: 
- remote_api: on 

inbound_services: 
- warmup 

libraries: 
- name: django 
    version: latest 

handlers: 
- url: /css 
    static_dir: css 

- url: /_ah/queue/deferred 
    script: djangoappengine.deferred.handler.application 
    login: admin 

- url: /_ah/stats/.* 
    script: djangoappengine.appstats.application 

- url: /media/admin 
    static_dir: django/contrib/admin/media 
    expiration: '0' 

- url: /.* 
    script: djangoappengine.main.application 

我index.yaml中:

indexes: 

- kind: django_admin_log 
    properties: 
    - name: user_id 
    - name: action_time 
    direction: desc 

- kind: django_content_type 
    properties: 
    - name: app_label 
    - name: name 

回答

1

的App Engine不支持Django模型。您必須使用App Engine的db.models或ndb.models API編寫模型。

另一種選擇是使用Django-Nonrel。這是Django 1.3的一個分支,適用於App Engine或MongoDB。這將允許你使用Django模型。

它在本地成功有點奇怪。您的Django安裝程序必須配置爲使用SQLite等SQL數據庫,但實際上可能不會寫入dev_appserver數據存儲區。

+0

生病了吧,我的羣組搞砸了settings.py文件..謝謝!! – iCodeLikeImDrunk 2012-04-26 23:23:51

+1

哎呀,我沒仔細看,看起來你已經在使用django-nonrel了。沒有抓住那個。 – dragonx 2012-04-27 03:13:16