私は次の2つのモデルを持っています: models.py
class Genre(models.Model):
name = models.CharField(max_length=50, blank=True, unique=True)
def __unicode__(self):
return self.name
class Movies(models.Model):
title = models.CharField(max_length=50, blank=False)
plot = models.CharField(max_length=500, blank=True)
actors = models.CharField(max_length=200, blank=True)
director = models.CharField(max_length=100, blank=True)
genre = models.ManyToManyField(Genre)
def __unicode__(self):
return self.title
フォーム.py
class MovieForm(forms.ModelForm):
genre = forms.CharField(widget=forms.TextInput)
class Meta:
model = Movies
syncdb を実行すると、movies , genre , movies_genre
テーブルが作成されます
movies_genre table has (id, movies_id , genre_id)
ただし、moviesテーブルでは、 genre_idのようなジャンル フィールドの列は作成されません。
ムービーテーブルにgenre_idフィールドがないのはなぜですか?
編集:.................データを追加する方法:
def genre_save(request):
genre_name = request.POST['genre']
genre_obj = Genre(name=genre_name)
genre_obj.save()
movie_obj = Movies(genre=genre_obj.id)
movie_obj.save() // error
TypeError 'genre' は、この関数の無効なキーワード引数です
def add_movie(request):
if request.method=="POST":
genre_save(request)
form_post = MovieForm(request.POST)
form_post.save()
/// other stuff....