У меня есть класс Book
:
from django.db import models
from users.models import User
class Book(models.Model):
title = models.CharField(max_length=150)
authors = models.ManyToManyField("Author")
который ссылается на класс Author:
class Author(models.Model):
name = models.CharField(max_length=150)
birthday = models.DateField()
И у меня есть форма для класса Книги под названием BookForm
from django import forms
from django.forms import CharField
from books.models import Book
class BookForm(forms.ModelForm):
authors = CharField()
class Meta:
model = Book
fields = ["title","authors"]
Я хочу создавать Книги с помощью BookForm, что достаточно просто, но вместо того, чтобы выбирать авторов из списка, как это происходит со значением по умолчанию (поскольку это ManyToManyField), я хочу, чтобы пользователь мог вводить текст, разделенная запятыми строка имени каждого автора. Мой вид настроен так:
def create_book(request):
if request.user is None:
return redirect("/users/login/")
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
nbook = form.save(commit=False)
authorlist = form.authors.split(",")
nbook.owner = request.user
nbook.save()
for auth in authorlist:
nbook.authors.create(name=auth)
return redirect("/books/")
else:
form = BookForm()
return render_to_response("books/create.html", {
"form": form,
}, context_instance=RequestContext(request))
Но это не работает. Я получаю ошибку 'BookForm' object has no attribute 'authors'
. Я не уверен, есть ли здесь фундаментальная проблема или это просто синтаксис, но кто-то может помочь? Я совершенно новичок в Python и Django: [
Спасибо!