【问题标题】:How to access specific value from model choice field in django如何从 Django 中的模型选择字段访问特定值
【发布时间】:2023-02-21 11:57:56
【问题描述】:

所以我有这个包含 3 个值的材料模型,可以从模板的下拉菜单中选择,如何访问这个确切的“tegangan_tarik”和“tegangan_values”以包含在我的输出页面中

模型.py

class Materials(models.Model):
    SAE_Number = models.CharField(max_length=64)
    tegangan_tarik = models.FloatField()
    tegangan_luluh = models.FloatField()

    def __str__(self):
        return f"{self.SAE_Number}: Su = {self.tegangan_tarik} MPa; Sy = {self.tegangan_luluh} MPa"

表单.py

from django import forms
from .models import *


class MyForm(forms.Form):
    N = forms.FloatField(label="Faktor Keamanan ",
                            widget=forms.NumberInput(attrs={'value': '2.0', 'min': '0'}))
    T = forms.FloatField(label="Momen Puntir / Torsi ",
                            widget=forms.NumberInput(attrs={'placeholder': 'N-mm', 'min': '0'}))
    Material = forms.ModelChoiceField(
                            label = "Pilih Bahan :", queryset = Materials.objects.all())
    Ft = forms.FloatField(label="Gaya Tangensial Pada Elemen (Ft) ",
                            widget=forms.NumberInput(attrs={'placeholder': 'N', 'min': '0'}))
    Fr = forms.FloatField(label="Gaya Radial Pada Elemen (Fr) ",
                            widget=forms.NumberInput(attrs={'placeholder': 'N', 'min': '0'}))
    AB = forms.FloatField(label="Jarak Antara Bantalan A ke Elemen B (AB) ",
                            widget=forms.NumberInput(attrs={'placeholder': 'mm', 'min': '0'}))
    BC = forms.FloatField(label="Jarak Antara Bantalan C ke Elemen B (BC) ",
                            widget=forms.NumberInput(attrs={'placeholder': 'mm', 'min': '0'}))

视图.py

from django.shortcuts import render
from .forms import *


import math
 

# Create your views here.
def input(request):
    return render(request, "shaft/input.html", {
        "form": MyForm(),
    })

def output(request):

    N = float(request.POST['N'])
    T = float(request.POST['T']) 
    Sy = #how to access this tegangan_tarik value from the models
    Su = #how to access this tegangan_luluh value from the models
    Ft = float(request.POST['Ft']) 
    Fr = float(request.POST['Fr']) 
    AB = float(request.POST['AB']) 
    BC = float(request.POST['BC']) 

    # Menghitung Gaya Reaksi Tumpuan
    Az = (Ft * BC) / (AB + BC)
    ...
    ...

输入.html

{% extends "shaft/layout.html" %}
{% load static %}

        {% block title %}Input Form{% endblock %}

{% block body %}
    <h1>INPUT PAGE</h1>
    <form action="{% url 'shaft:output' %}" method="post">
        {% csrf_token %}
         {{ form.as_p }}
            <input type="submit">
    </form>

</body>
{% endblock %}

我真的不知道该怎么办:sad:

【问题讨论】:

  • 思考你要Sy = Material.tegangan_tarik

标签: python django django-models django-views django-forms


【解决方案1】:

首先,在表单中,您还可以传递另一个变量,例如 Materials 实例的 id。

在输出视图中接收到该 id

id = request.POST["id"]

然后在 views.py 中导入 Materials 类

material = Materials.objects.get(id=id)

然后您可以访问该实例的所有三个属性

material.tegangan_tarik

【讨论】:

    猜你喜欢
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    相关资源
    最近更新 更多