django 使用外键在表中创建一条记录

问题描述 投票:0回答:1

我想通过 UI 在带有外键的表中创建一个新条目

模型,方案是一个表,在表SchemeMovement中引用:

class Scheme(models.Model):
    id = models.AutoField(db_column='Id', primary_key=True)  
    scheme_code = models.CharField(db_column='Scheme_Code', max_length=10, blank=True, null=True)

class SchemeMovement(models.Model):
    id = models.AutoField(db_column='Id', primary_key=True)  
    scheme = models.ForeignKey(Scheme, models.DO_NOTHING, db_column='Scheme_Id', blank=True, null=True)  

形式:

class SchemeForm(forms.ModelForm):  
    class Meta:  
        model = Scheme  
        fields = "__all__"  


class SchememovForm(forms.ModelForm):  
    class Meta:  
        model = SchemeMovement  
        fields = "__all__" 

景色:

def schmov(request):  
    if request.method == "POST":  
        form = SchememovForm(request.POST)  
        if form.is_valid():  
            try:  
                form.save()  
                return redirect('/showSchemeMovement')  
            except:  
                pass  
    else:  
        form = SchememovForm()  
    return render(request,'indexSchemeMovement.html',{'form':form})

html:

<form method="POST" class="post-form" action="/schmov">  
        {% csrf_token %}  
    <div class="container">  
<br>  
    <div class="form-group row">  
    <label class="col-sm-1 col-form-label"></label>  
    <div class="col-sm-4">  
    <h3>Enter Details</h3>  
    </div>  
  </div>  
  <div class="form-group row">  
    <label class="col-sm-2 col-form-label">Scheme Code:</label>  
    <div class="col-sm-4">  
      {{ form.scheme.scheme_code }}  
    </div>  
  </div>   

但是用户界面上一片空白:

如何通过UI新建条目?

更新:

在html中,如果我将 {{ form.scheme.scheme_code }} 更改为 {{ 表单. 方案 }} 我可以看到用于选择方案的下拉菜单

但是我如何显示“方案代码”的值而不是方案对象(1)?

django django-models django-forms
1个回答
0
投票
  1. 在 html 中,如果我将 {{ form.scheme.scheme_code }} 更改为 {{ form.scheme }} 我可以看到用于选择方案的下拉菜单

  2. 我为模型实现了 str 方法。

    类Scheme(models.Model): id = models.AutoField(db_column='Id', Primary_key=True)
    schema_code = models.CharField(db_column='Scheme_Code', max_length=10, Blank=True, null=True)

    def str(自身): 返回 self.scheme_code

结果,在下拉列表中得到了方案代码:

© www.soinside.com 2019 - 2024. All rights reserved.