2008-11-16 32 views
5

Tôi đang gặp một lỗi mà tôi không chắc chắn những gì gây ra nó"Lỗi không xác định cột 'user_id' theo quan điểm django

Dưới đây là lỗi:.

Exception Type:  OperationalError 
Exception Value:  
(1054, "Unknown column 'user_id' in 'field list'") 

Có ai biết tại sao tôi ? nhận được lỗi này, tôi không thể hình dung nó ra Tất cả mọi thứ có vẻ là tốt

xem mã của tôi là dưới đây:..

if "login" in request.session: 
    t = request.POST.get('title', '') 
    d = request.POST.get('description', '') 
    fid = request.session["login"] 
    fuser = User.objects.get(id=fid) 
    i = Idea(user=fuser, title=t, description=d, num_votes=1) 
    i.save() 
    return HttpResponse("true", mimetype="text/plain") 
else: 
    return HttpResponse("false", mimetype="text/plain") 

tôi apprec iate giúp đỡ bất kỳ! Cảm ơn!

Chỉnh sửa: Cũng là một câu hỏi phụ. Tôi có sử dụng objects.get (id = hoặc objects.get (pk =? Nếu tôi sử dụng khóa chính, tôi có cần khai báo trường id hoặc chỉ mục trong mô hình không?

Chỉnh sửa: Dưới đây là các mô hình có liên quan :?

class User (models.Model): 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 
    email = models.CharField(max_length=200) 
    password = models.CharField(max_length=200) 

class Idea (models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=200) 
    description = models.CharField(max_length=255) 
    num_votes = models.IntegerField() 

Trả lời

4

bạn sẽ phải hiển thị mô hình của bạn để có được sự giúp đỡ thật, nhưng nó trông giống như bảng Idea của bạn không có một cột user_id bạn có sửa đổi cấu trúc bảng SQL

+0

Tôi không chạm vào cấu trúc bảng SQL. Tôi đã thêm mô hình của mình vào câu hỏi để hiển thị nó. Tôi chạy syncdb nhiều lần. – rksprst

+2

syncdb không thay đổi cấu trúc bảng, nó chỉ có thể tạo các bảng không tồn tại. Vì vậy, nếu bạn thay đổi mô hình của mình, bạn vẫn sẽ có các bảng cũ và cần phải thả bảng và tạo lại chúng (hoặc thay đổi chúng theo cách thủ công). – che

+0

Tuyệt vời !! Cảm ơn bạn. Tôi đã bỏ tất cả các bảng và nó hoạt động tốt. – rksprst

5
  1. Trường user_id là tham chiếu FK từ Idea đến User. ke bạn đã thay đổi mô hình của bạn, và không cập nhật cơ sở dữ liệu của bạn, sau đó bạn sẽ có loại vấn đề.

    Thả bảng cũ, chạy lại syncdb.

  2. Bảng mẫu của bạn có trường id theo mặc định. Bạn có thể gọi số đó là id trong các truy vấn của mình. Bạn cũng có thể sử dụng từ đồng nghĩa của pk.

    Nếu bạn xác định trường khóa chính của riêng mình, bạn sẽ không nhận được trường tự động id. Nhưng bạn vẫn có thể sử dụng pk để tham khảo Khóa chính.

+1

"pk" không phải là một từ đồng nghĩa cho ID, nó chỉ định cột khóa chính (có thể tôi đặt tên khác). Rất tiện dụng nếu bạn không biết (hoặc không muốn) tên chính xác cho cột khóa chính. – zgoda

+0

http://docs.djangoproject.com/en/dev/topics/db/queries/#the-pk-lookup-shortcut. PK có nghĩa là PK, hoặc là một trong những bạn đã xác định trong mô hình hoặc PK mặc định, đó sẽ là ID. –

0

Có, tôi đã xóa các bảng và tất cả đều hoạt động tốt. Tuy nhiên, bạn phải thực sự đi vào cơ sở dữ liệu và thả chúng. "manage.py flush" hoặc "manage.py reset appname" sẽ không tự thực hiện.

-Nick O

Các vấn đề liên quan