Как получить опции выбора из моделей django?
Я не могу отобразить продукт в моей модели заказа на моей html странице. Я пытаюсь найти проблему здесь. но когда я выбираю form.product.model_name, это должно дать мне названия моделей, но в опциях пусто. Ниже я прилагаю код для проверки,
в моем models.py
from cgi import print_form
from email.policy import default
from enum import unique
from django.db import models
# Create your models here.
class ProductModel(models.Model):
product_id = models.CharField(max_length=100,unique=True, default = '0')
product_name = models.CharField(max_length=100, default=" ")
model_name = models.CharField(max_length=100, default=" ")
def __str__(self):
return str(self.product_id)
productchoice = (ProductModel.objects)
class OrderModel(models.Model):
order_id = models.AutoField(unique=True, primary_key=True)
Customer_name = models.CharField(max_length=100)
Father_name = models.CharField(max_length=100)
Village = models.CharField(max_length=100)
Tehsil = models.CharField(max_length=100)
District = models.CharField(max_length=100)
State = models.CharField(max_length=100)
product = models.ForeignKey(ProductModel, on_delete = models.CASCADE, default= 0)
def __str__(self):
return str(self.order_id)
в моем view.py
from email import message_from_binary_file
from django.shortcuts import render
from .models import OrderModel, ProductModel
from .forms import OrderForm, ProductForm
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib import messages
from django.contrib.messages import get_messages
# Create your views here.
def home(request):
order_form = OrderForm
if request.method == 'POST':
order_form = OrderForm(request.POST)
if order_form.is_valid():
order_form.save()
messages.success(request, ('Your data was successfully added!'))
return HttpResponseRedirect('/')
else:
messages.error(request, order_form.errors)
orders = OrderModel.objects.all()
context = {'order':orders, 'form':order_form}
return render(request,'Orders/addorder.html',context)
def product(request):
product_form = ProductForm
if request.method == 'POST':
product_form = ProductForm(request.POST)
if product_form.is_valid():
product_form.save()
messages.success(request,"Your Products is successfully saved!")
return HttpResponseRedirect('/')
else:
messages.error(request,product_form.errors)
products = ProductModel.objects.all()
context = {'product':products, 'form':product_form}
return render(request,'Orders/addproduct.html',context)
моя html-страница
{% extends 'OMS/index.html' %}
{% load static %}
{% block title %}
<title>Order</title>
{% endblock %}
{% block main %}
<link rel="stylesheet" href="{% static 'addorder.css' %}">
<div class="container mp-3">
<h1>Create your Order</h1>
<form action="" method="POST">
{% csrf_token %}
<div>
<label for="Customer Name" class="form-label">Customer Name: </label>
{{ form.Customer_name }}
</div>
<div>
<label for="Father Name" class="form-label">Father Name: </label>
{{ form.Father_name }}
</div>
<div>
<label for="Village" class="form-label">Village: </label>
{{ form.Village }}
</div>
<div>
<label for="Tehsil" class="form-label">Tehsil: </label>
{{ form.Tehsil }}
</div>
<div>
<label for="District" class="form-label">District: </label>
{{ form.District }}
</div>
<div>
<label for="State" class="form-label">State: </label>
{{ form.State }}
</div>
<div>
<select name="product" id="productselection">
{% for form in form %}
<option value="{{ form.product.product_id }}">{{ form.product.model_name }}</option>
{% endfor %}
</select>
</div>
<button type="submit">Submit</button>
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li {% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
</form>
</div>
{% endblock %}
my form.py
from django import forms
from .models import OrderModel, ProductModel, productchoice
class OrderForm(forms.ModelForm):
Customer_name = forms.CharField(widget=forms.TextInput(attrs={
"class":"input"
}))
class Meta:
model = OrderModel
fields = "__all__"
class ProductForm(forms.ModelForm):
class Meta:
model = ProductModel
fields = "__all__"