1

申し訳ありませんが、これはこの問題の1000番目の質問のようですが、トンネルの終わりにまだライトが見えません。

2つのモデルがあるとしましょう。

class Video(models.Model):
title = models.CharField(u"Titel",max_length=200)
slug = AutoSlugField(populate_from='title',unique=True)
date = models.DateField("Datum")
description = models.TextField(u"Beschreibung")
user = models.OneToOneField(User, blank=True, null=True)

class Channel(models.Model):
name = models.CharField(u"Name",max_length=30)
slug = AutoSlugField(populate_from='name',unique=True)
videos = models.ManyToManyField('videoportal.Video',related_name="contained_videos",blank=True,null=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)

ご覧のとおり、ビデオを含むチャンネルが必要です。したがって、このようなModelFormを使用して動画を広告する場合

class VideoForm(ModelForm):
    class Meta:
        model = Video

取得したフォームには、チャネルを選択するための入力フィールドが含まれていません(もちろん含まれていません)。では、どうすればこれを行うことができますか?ドロップダウンで1つのチャネルを選択するために、フォームに入力フィールドを含めるにはどうすればよいですか?

ありがとう、フィリップ

4

3 に答える 3

1

動画が 1 つのチャンネルにのみ属している場合は、Videoモデルに aForeignKeyを付けてくださいChannel。複数のチャネルに属する必要がある場合は、既に提案されているようManyToManyFieldに、Videoモデルで a を使用します。

これは、動画をアップロードしてチャンネルに追加するという考えに、その逆よりもはるかに適していると思います。

于 2012-07-17T17:37:09.607 に答える
0

モデルに ManyToMany フィールドを配置して、Videoモデルから省略してみてくださいChannel


class Video(model.Model):
    ...
    channels = model.ManyToManyField('videoportal.Channel', related_name='videos')
    ...

単一のチャンネルを選択する単純なドロップダウンが必要な場合、なぜビデオとチャンネルの間で多対多の関係になるのでしょうか?

于 2012-07-17T16:48:42.457 に答える
0

Django ModelForm の代わりにカスタム フォームを使用します。

おそらくこのようなもの、

class VideoForm(forms.Form):
    title = forms.CharField()
    description = forms.TextField()
    channel = forms.ModelChoiceField(queryset= Channel.objects.all(), empty_label=None)

ビューで検証を行います。メソッドを使用Model save()して、POST されたフォームに含まれる情報を保存します。

于 2012-07-17T16:28:37.967 に答える