简体   繁体   English

django:如果模型具有相关模型(ForeignKey),则显示主模型窗体中的字段

[英]django: if model has related models (ForeignKey) display Fields in main modelform

I have two models: 我有两个模型:

class Post(models.Model):
    image = models.ImageField(upload_to='%Y/%m/%d')
    title = models.CharField(max_length=200)

class Addimg(models.Model):
    addimages = models.ForeignKey('Post', null=True)
    addimg = models.ImageField(upload_to='images')

I wish to add images to my Post model with the "Addimg" model which works fine so far, but now i want that when I edit my parent model (Post), all the appended "Addimg" models also appear in the form. 我希望使用到目前为止可以正常运行的“ Addimg”模型将图像添加到我的Post模型中,但是现在我希望在编辑父模型(Post)时,所有附加的“ Addimg”模型也都出现在表单中。 How could i do that? 我该怎么办? What would be the simplest solution? 什么是最简单的解决方案?

Here is my view which handles my "parent" form: 这是处理“父母”表格的视图:

def edit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        form = PostForm(request.POST, request.FILES, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.save()
            return redirect('blog.views.detail', pk=post.pk)
    else:
        form = PostForm(instance=post)
    return render(request, 'blog/edit.html', {'form': form})

and my forms.py: 和我的forms.py:

class PostForm(forms.ModelForm):
    class Meta: 
        model = Post 
        fields = ('image', 'title',)

class AddimgForm(forms.ModelForm):
    class Meta:
        model = Addimg
        fields = ('addimages', 'addimg',)

In my form template I have: 在我的表单模板中,我有:

<form enctype="multipart/form-data" method="POST" class="post-form">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit" >Save</button>
</form>

I would be very happy about any tips or usefull links since i'm very new to django/programming I even don't know the right keywords to search for. 我对任何提示或有用的链接都会非常满意,因为我对Django /编程非常陌生,我什至不知道要搜索的正确关键字。 Thanks 谢谢

看看内联表单集

Ok got it easy thing for django: 好的,对于django来说很简单:

in forms.py: 在forms.py中:

from django.forms.models import inlineformset_factory

MyFormSet = inlineformset_factory(Post, Addimg, extra=1, fields = ('addimages', 'addimg',))

in views.py: 在views.py中:

from .forms import PostForm, MyFormSet

def manageimages(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        formset = MyFormSet(request.POST, request.FILES, instance=post)
        if formset.is_valid():
            formset.save()
            post.save()
            return redirect('blog.views.someview')
    else:
        formset = MyFormSet(instance=post)
    return render(request, 'blog/myformsettemplate.html', {'formset': formset})

and in myformsettemplate.html: 并在myformsettemplate.html中:

<form enctype="multipart/form-data" method="POST" class="post-form">
    {% csrf_token %}
    {{ formset.management_form }}
    {% for form in formset %}
    <div class="third">
        {{ form.as_p }}
    </div>
    {% endfor %}
    <button type="submit" >Save</button>
</form>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Django ModelForm从ForeignKey相关字段中添加其他字段 - Django ModelForm add extra fields from the ForeignKey related fields Django:无法保存模型 - 错误:“id”需要一个数字,但得到了<django.db.models.fields.related.ForeignKey...> - Django: unable to save model - Err: "id" expected a number but got <django.db.models.fields.related.ForeignKey...> Django:以表格形式添加相关模型(ForeignKey)的字段 - Django: add fields of the related model (ForeignKey) in the form 如何使用 Django 中的两个 ForeignKey 字段在 ModelForm 中保存 model - How to save a model in ModelForm with two ForeignKey fields in Django 具有外键字段的模型的 Django ModelForm 无法正确显示 selectBox - Django ModelForm with model having ForeignKey field does not display selectBox correctly Django ModelForm字段根据是否使用相关FK字段显示 - Django ModelForm fields display based on whether related FK fields are used 类型错误在...<django.db.models.fields.related.ForeignKey> 不是 JSON 可序列化的 - TypeError at ... <django.db.models.fields.related.ForeignKey> is not JSON serializable 在Django中获取与此模型相关的所有模型(通过ForeignKey,ManyToMany) - Get all models related to this model in django (via ForeignKey, ManyToMany) 为数据库视图相关的模型创建基本的Django模型类,并将所有ForeignKey字段设置为on_delete = DO_NOTHING - Create base Django model class for DB-view related models setting all ForeignKey-fields to on_delete=DO_NOTHING Django modelform集成了外键属性的字段 - Django modelform integrate the fields for the attributes of a foreignkey
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM