Tags:
Forums: 

คือผม กำลังหัด django อยู่ตอนนี้
ก็เลยทำ blog เล่นๆ ขึ้นมาอันนึง โดย มี model เป็น แบบนี้

files ./project/blog/model.py

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

class Blog(models.Model):
title = models.CharField(max_length=255)
content = models.TextField()
author = models.ForeignKey(User)
create_date = models.DateTimeField(auto_now_add=True)
update_date = models.DateTimeField(auto_now_add=True)
update_by = models.ForeignKey(User,related_name="update_by")

def __unicode__(self):
    return self.title    

ทีนี้ผมสั่ง python manage.py sql blog ผลการรัน

BEGIN;
CREATE TABLE "blog_blog" (
"id" integer NOT NULL PRIMARY KEY,
"title" varchar(255) NOT NULL,
"content" text NOT NULL,
"author_id" integer NOT NULL REFERENCES "auth_user" ("id"),
"create_date" datetime NOT NULL,
"update_date" datetime NOT NULL,
"update_by_id" integer NOT NULL REFERENCES "auth_user" ("id")
)
;
COMMIT;

และ syncdb แล้ว
แต่พอ รัน start server โดยเข้าไปเทสกับ ระบบ admin ของ django แล้ว
ตอนที่จะ add blog ครับ
เกิด error บอกว่า

OperationalError at /admin/blog/blog/add/
table blog_blog has no column named author_id

งงเลยครับ หาทางแก้ไม่ได้เลย ช่วยด้วยนะครับ
ขอบคุณมากๆ คับ

Get latest news from Blognone
By: bunthidj on 26 October 2008 - 09:58 #69481

ลอง เอา related_name ออกดูครับ จาก

author = models.ForeignKey(User,related_name=‘author’)

เป็น

author = models.ForeignKey(User)

related_name น่าจะเอาไว้ใช้ในกรณีที่ reference ถึงตัว self object เองมากกว่านะครับ ลองดูจาก link ข้างล่างนี้

http://www.djangoproject.com/documentation/models/m2o_recursive/

By: chaow
Android
on 26 October 2008 - 10:36 #69484 Reply to:69481
chaow's picture

แก้ได้แล้วครับ ขอบคุณมาก
เอาเฉพาะ related_name='author' ออก ส่วน update_by ไว้อย่างงั้น

และผมลอง ลยไฟล์ sqlite ออกไปแล้วสร้างใหม่ ปรากฏว่า ผ่านฉลุยคับ

By: meledictas on 27 October 2008 - 01:03 #69592

update_date = models.DateTimeField(auto_now_add=True) น่าจะเป็น update_date = models.DateTimeField(auto_now=True) นะครับ