ช่วยด้วยคับ เกี่ยวกับ auth ของ django

tags:

คือผม กำลังหัด 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

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

bunthidj's picture

ลอง เอา 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/

chaow's picture

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

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

meledictas's picture

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

Site Search

 
Web blognone.com

Poll

User login