Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 无法通过具有Crispy Forms的外键上载数据_Django_Django Crispy Forms - Fatal编程技术网

Django 无法通过具有Crispy Forms的外键上载数据

Django 无法通过具有Crispy Forms的外键上载数据,django,django-crispy-forms,Django,Django Crispy Forms,我显示类别和子类别的值,从中获取值,并将其保存为新闻实体中的外键 models.py 添加_news.html 但是,现在我如何使用crispy forms显示具有子类别的相同类别列表,并将其保存在我的模型PK(catid)中 所以,我只能展示这个 添加_news.html views.py 我尽可能详细地描述了我的问题,因为我已经考虑了好几天了也许总是将SubCat与Cat一起显示是有意义的: class SubCat(models.Model): name = models.C

我显示类别和子类别的值,从中获取值,并将其保存为新闻实体中的外键

models.py

添加_news.html

但是,现在我如何使用crispy forms显示具有子类别的相同类别列表,并将其保存在我的模型PK(catid)中

所以,我只能展示这个

添加_news.html

views.py


我尽可能详细地描述了我的问题,因为我已经考虑了好几天了

也许总是将SubCat与Cat一起显示是有意义的:

class SubCat(models.Model):   
    name = models.CharField(max_length=50)
    catid = models.ForeignKey(Cat, on_delete = models.CASCADE)

    def __str__(self):
        return "{} | {}".format(self.catid.name, self.name)


我不确定我是否正确理解了这一点,但听起来好像您正试图在表单中显示
SubCat
s并从中保存选择?是的!并将主键保存在新闻中。
  <label class="col-md-1 control-label" for="example-text-input">Text Input</label>
  <div class="col-md-5">
       <input id="newstitle" name="newstitle" type="text" class="form-control" placeholder=".col-md-7">
  </div>

  <select id="newscat" name="newscat" class="select-chosen" data-placeholder="Choose a Category.." style="width: 250px;">
     {% for i in subcat %}
         <option value="{{ i.pk }}">{{ i.catid.name }} | {{ i.name }}</option>
     {% endfor %}
  </select>
@login_required(login_url='mylogin')
def news_add(request):
    subCat = SubCat.objects.all()
     catID = request.POST['newscat']
     if request.method == 'POST':
             newstitle = request.POST['newstitle']                      
             newCatID = SubCat.objects.get(pk=catID)
             pic= request.FILES['picture']
             news = News(name=newstitle, catid=newCatID, pic=pic)
             ...
             news.save()
      else:
          return render(request, 'back/news_add.html', {'subcat' : subCat})
<div class="col-md-5">
       {{ form.name|as_crispy_field }}
</div>
<div class="col-md-5">
       {{ form.pic|as_crispy_field }}
</div>
<div class="col-md-5">
       {{ form.catid.name|as_crispy_field }} {{ form.name|as_crispy_field }} # Not possible
</div>
class NewsForm(ModelForm):
    class Meta:
        model = News
        fields = ['name', 'pic', 'catid',]       
        labels = {'name': _('Title'),                  
                    'catid': _(''),
                    'pic': _('picture'),
                    }
@login_required(login_url='mylogin')
def news_add(request):
    subCat = SubCat.objects.all()
    if request.method == 'POST':

        form = NewsForm(request.POST, request.FILES)

        if form.is_valid():

            new = form.save()
            new.save()
            #form.save_m2m()

            return redirect('news_list')

    else:
        form = NewsForm()
        #newCatID = get_object_or_404(SubCat, pk = catID)

    return render(request, 'back/news_add.html', {'form':form, 'subcat' : subCat})
class SubCat(models.Model):   
    name = models.CharField(max_length=50)
    catid = models.ForeignKey(Cat, on_delete = models.CASCADE)

    def __str__(self):
        return "{} | {}".format(self.catid.name, self.name)