簡體   English   中英

在 Django 表單中將數據庫條目顯示為選項

[英]Display Database entry as option in a Django Form

我正在嘗試創建一個庫存應用程序和一個預訂應用程序。

我正在嘗試從庫存 model 中獲取條目,並且可以在預訂應用程序的幫助下進行預訂。

我想要達到的目標:

  1. 預訂應用程序應從庫存應用程序序列號中獲取序列號條目。 它應該在下拉列表的幫助下,僅顯示特定序列號的條目,因此不應輸入隨機序列號。 (我嘗試了外鍵和多對多的概念,但我無法在 html 頁面 UI 上實現它,但我在管理面板上實現了它)您能否建議需要進行哪些更改?

現在,我正在創建一個這樣的表單: 在此處輸入圖像描述

但這是非常糟糕的方法,因為表單沒有得到驗證,我將用戶重定向到其他存在序列號的 web 頁面。

我正在嘗試查看我們如何將序列號作為下拉列表提供,以便用戶可以將 select 序列號設為 select。

  1. 我正在嘗試將插槽字段添加為唯一條目。 我嘗試在 reservation_app/models.py 中將插槽添加為 unique = True ,但它僅在管理面板中工作。 當我嘗試在 html 頁面上提供重復條目時,它正在接受重復值並且它也被存儲在數據庫中。

我試圖通過整個互聯網從很長時間內找到它的解決方案,但對我來說似乎很難。

如果有人知道如何做到這一點。 那將非常感激。 我提供了幾乎所有必要的代碼,如下所示:

庫存應用程序/models.py

from django.db import models
#from django.utils import timezone
# Create your models here.
class Form1(models.Model):
    item = models.CharField(max_length=125)
    quantity = models.IntegerField(default=0)
    vendor = models.CharField(max_length=125)
    inward = models.IntegerField(default=1234)
    sno = models.CharField(max_length=100)
    date = models.DateField()
    date_received = models.DateField()
    def __str__(self):
      return self.item

預訂應用程序/models.py

from django.db import models

# Create your models here.
class Reserve(models.Model):
   team = models.CharField(max_length=125 , default="DevOps" )
   rsno = models.CharField(max_length=125, default="ABCD12345")
   mac_address = models.CharField(max_length=125 , default="AA-00-04-00-XX-YY")
   hostname = models.CharField(max_length=125, default="gitlab.altiostar.com")
   ue = models.CharField(max_length=125 , null=True)
   slot = models.DateField(null=True)
   def __str__(self):
    return self.team

預訂應用程序/views.py

from django.shortcuts import render, HttpResponse
from .models import Reserve 
#from reservation_app.models import Reserve


# Create your views here.
def reserve(request):
    if request.method == "POST":
        team = request.POST.get('team')
        rsno = request.POST.get('rsno')
        mac_address = request.POST.get('mac_address')
        hostname = request.POST.get('hostname')
        ue = request.POST.get('ue')
        slot = request.POST.get('slot')
        reserve = Reserve( team=team , rsno=rsno, slot=slot , mac_address = mac_address , hostname = hostname , ue = ue ) #security_stamp_date=security_stamp_date 
        reserve.save()
    return render(request, 'home.html')

庫存應用程序/views.py

from django.shortcuts import render, HttpResponse
from inventory_app.models import Form1
import datetime
from .models import Form1 
import csv
from .filters import ItemFilter

def form1(request):
    if request.method == "POST":
        item = request.POST.get('item')
        quantity = request.POST.get('quantity')
        sno = request.POST.get('sno')
        inward = request.POST.get('inward')
        vendor = request.POST.get('vendor')
        date_received = request.POST.get('date_received')
     #   security_stamp_date = request.POST.get('security_stamp_date')
        form1 = Form1(item=item, quantity=quantity , inward=inward , sno=sno , vendor=vendor, date=datetime.datetime.now() , date_received=date_received ) #security_stamp_date=security_stamp_date 
        form1.save()

    return render(request, 'form1.html')

home.html reservation_app頁面

<div class="form-group">
          <label for="exampleFormControlInput1">Radio Serial Number</label>
          <input type="text" class="form-control" id="exampleFormControlInput1" name= "rsno" placeholder="S/N123ABC123" required >
        </div>
        <a href="http://127.0.0.1:8000/form1_entries/"  target="_blank" class="btn btn-info btn-sm" role="button" aria-disabled="true"> Check Available Serial Numbers </a>

      <div class="form-group">
        <label for="exampleFormControlInput1">Book your slot for Date</label>
        <input type="datetime-local" class="form-control" id="exampleFormControlInput1" name= "slot" >
      </div>

      <button type="submit" class="btn btn-primary"> Submit </button>

form1.html of inventory_app

    <div class="form-group">
      <label for="exampleFormControlInput1">Serial Number</label>
      <input type="text" class="form-control" id="exampleFormControlInput1" name= "serial_number" placeholder="S/N123ABC123" required >
    </div>

      <button type="submit" class="btn btn-primary"> Submit </button>

謝謝你的時間:)

  1. 您要做的是創建一個動態表單,您可以在其中生成一個選擇字段。 查看這篇關於創建動態表單的文章: https://www.caktusgroup.com/blog/2018/05/07/creating-dynamic-forms-django/

暫無
暫無

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

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