簡體   English   中英

Django 不要使用 Floppyforms 保存表格

[英]Django don't save a form using Floppyforms

我的 model 中有一個名為 medicamento 的字段,它是一個外鍵,我希望該字段中的所有值都顯示在我的表單的可搜索下拉列表中。 我能夠做到這一點,但當我嘗試保存時,它說“選擇一個有效的選擇。該選擇不是可用的選擇之一。” 希望你能幫助伙計們! 提前致謝

模型.py

class Stockmov(models.Model):
numero = models.AutoField(primary_key=True)
created= models.DateTimeField(auto_now_add=True,verbose_name="Fecha de Movimiento")
author = models.ForeignKey(User,verbose_name="autor",on_delete=models.PROTECT, null=True, blank=True)
medicamento= models.ForeignKey(Medicamento,on_delete=models.CASCADE)
motivo= models.CharField(max_length=200)
Cantidad = models.IntegerField()

forms.py

class StockmovForm(forms.ModelForm):
class Meta:
    model = Stockmov

    fields =  ['medicamento', 'motivo', 'Cantidad' ]
    widgets = {
    #'medicamento': forms.Select(attrs={'class':'form-control', 'placeholder':'Medicamento'}),
    'medicamento': forms.widgets.TextInput(attrs={'class':'form-control', 'placeholder':'Medicamento'},datalist=Medicamento.objects.all()), 
    'motivo': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Motivo'}),
    'Cantidad': forms.NumberInput(attrs={'class':'form-control', 'placeholder':'Cantidad'}),
    }
    labels = {
        'medicamento':'Medicamento', 'motivo':'Motivo del Movimiento', 'Cantidad':'Cantidad del Movimiento',
    }

視圖.py

class StockmovCreate(CreateView):
model = Stockmov
form_class = StockmovForm
success_url = reverse_lazy('stockmov:stockmov')

def form_valid(self, form):
    form.instance.author = self.request.user
    print(self.request.user)
    return super(StockmovCreate, self).form_valid(form)

模板

      <form action="" method="post">{% csrf_token %}
       {{ form.as_p }}`s`
        <div class="text-center">
          <input type="submit" id="btnCrear" class="btn btn-secondary btn-block" value="Crear Movimiento" />
        </div>
      </form>

解決方法:我在我的項目中刪除了 floppyforms 並改用 Select2,因為它支持在外鍵字段上進行搜索,並且還可以輕松地創建一個帶有表單的實例。

模板

<script>
$(document).ready(function() {
  $('#id_medicamento').select2();
});
</script>

forms.py

class StockmovForm(forms.ModelForm):
class Meta:
model = Stockmov

fields =  ['medicamento', 'motivo', 'Cantidad' ]
widgets = {
'medicamento': forms.Select(attrs={'class':'form-control', 'placeholder':'Medicamento'}),
'motivo': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Motivo'}),
'Cantidad': forms.NumberInput(attrs={'class':'form-control', 'placeholder':'Cantidad'}),
}
labels = {
    'medicamento':'Medicamento', 'motivo':'Motivo del Movimiento', 'Cantidad':'Cantidad del Movimiento',
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM