Django在创建时添加到ManyToMany

时间:2018-04-09 02:06:51

标签: django django-models django-forms django-templates django-views

所以基本上我想模仿在将对象添加到m2m字段时的管理页面行为,我必须承认......我太丢失了......目前每个模型都有它自己的视图,但如果我为Album模型的创建对象添加一个按钮,如何将Photo模型返回到Album视图,以便保存它们?

我的models.py:

class Photos(models.Model):

    title = models.CharField(max_length=255, blank=True)
    file = models.FileField(
        upload_to="Resources/"
    )

class Album(models.Model):

    title = models.CharField(max_length=255, blank=True)
    files = models.ManyToManyField(
        Photos
    )

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题 - 您没有使用默认的管理界面,并且您想在创建相册时添加照片,假设照片已经上传(因为照片或相册必须先存在) - 在专辑视图中。

您可以创建ModelForm来制作相册,如下所示:

class AlbumCreateForm(forms.ModelForm):
    class Meta:
        model = Album
        fields = ['title', 'files']

您可以在“影集”视图中显示此表单,默认情况下,它将为标题生成CharField,为文件生成ModelMultipleChoiceField,您可以传入查询集Photos.objects.all()。 ModelMultipleChoiceField有一个默认的小部件SelectMultiple,基本上是:

<select multiple="multiple">
HTML中的

在您的视图中,您将在模型表单中收集request.POST数据并保存。详细了解如何保存ModelForms here