我會盡量提供儘可能多的信息,而不會超出我的需要。Django:通過表單創建時,將類與外鍵鏈接到另一個類
我有,其他領域中,被鏈接到另一類「用戶」一類「書」,像這樣:
from users.models import User
class Book(models.Model):
title = models.CharField(max_length=150)
owner = models.ForeignKey('users.User')
這「書」由一種形式,它是編碼等創建所以:
from django import forms
from books.models import Book
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ["title"]
這種形式顯示,看起來像一個模板:
<form method="post" action="">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" />
</form>
這是由跟隨着稱爲摹觀點:
def create_book(request):
if request.user is None:
return redirect("https://stackoverflow.com/users/login/")
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
form.owner = request.user # FFFFFUUUUUUU
form.save()
return redirect("/books/")
else:
form = BookForm()
return render_to_response("books/create.html", {
"form": form,
}, context_instance=RequestContext(request))
當表單提交,就應該把新書到數據庫中,但我得到一個錯誤:IntegrityError at /books/create/ null value in column "owner_id" violates not-null constraint
我想我沒有正確設置所有者。在關於以上,form.owner = request.user的request.user位設立中間件: 從users.models導入用戶
class UserMiddleware(object):
def process_request(self, request):
user_id = request.session.get("user_id")
if user_id is not None:
request.user = User.objects.get(pk=user_id)
else:
request.user = None
所以它應該是一個有效的用戶(我可以驗證我通過我的代碼中的其他功能登錄)。我對Python/Django非常陌生,我敢打賭,我設置新書的所有者的方式不正確,但也可能是其他的錯誤。如果需要更多信息,請讓我知道,我希望這不是太多!
感謝您的幫助。
完美,感謝您的幫助! – Joseph 2010-11-29 14:38:32