Изменение имени опций в Django Forms
Я пытаюсь изменить название опций в форме Django, но не знаю, где его изменить. Я смог изменить его в области администратора, но в форме я не могу
В форме
В области администратора
Я хотел бы, чтобы имя было таким же в форме, как и в области администратора
models.py
from django.db import models
class Tipologia(models.Model):
name = models.CharField(max_length=40)
codigo = models.CharField(max_length=2, null=True)
class Meta:
ordering = ['codigo']
def __str__(self):
return f'{self.codigo} - {self.name}'
class Rubrica(models.Model):
name = models.CharField(max_length=40)
codigo = models.IntegerField(blank=True, null=True)
tipologia = models.ForeignKey(Tipologia, on_delete=models.CASCADE)
subTipo = models.CharField(max_length = 100, blank=True, null=True)
codSubTipo = models.CharField(max_length = 5, blank=True, null=True)
class Meta:
ordering = ['tipologia']
def __str__(self):
if self.codSubTipo is None:
return f'{self.tipologia.codigo} - {self.name}'
return f'{self.tipologia.codigo} - {self.name}, {self.codSubTipo}'
class Carregamento(models.Model):
#name = models.CharField(max_length=124)
cliente = models.CharField(max_length=124, null=True)
tipologia = models.ForeignKey(Tipologia, on_delete=models.SET_NULL, null=True)
rubrica = models.ForeignKey(Rubrica, on_delete=models.SET_NULL, null=True)
numOrdem = models.IntegerField(blank=True, null=True)
ficheiros = models.CharField(max_length=124, blank=True, null=True)
def __str__(self):
return f'{self.id} - {self.cliente} | {self.tipologia.codigo} | {self.rubrica.name}'
forms.py
from django import forms
from myapp.models import Carregamento, Rubrica
class CarregamentoCreationForm(forms.ModelForm):
class Meta:
model = Carregamento
fields = '__all__'
widgets = { 'cliente': forms.TextInput(attrs={ 'class': 'form-control' }),
'numOrdem': forms.TextInput(attrs={ 'class': 'form-control' }),
'tipologia': forms.Select(attrs={ 'class': 'form-select' }),
'rubrica': forms.Select(attrs={ 'class': 'form-select' }),
'ficheiros': forms.TextInput(attrs={ 'class': 'form-select' }),
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['rubrica'].queryset = Rubrica.objects.none()
if 'tipologia' in self.data:
try:
tipologia_id = int(self.data.get('tipologia'))
self.fields['rubrica'].queryset = Rubrica.objects.filter(tipologia_id = tipologia_id).order_by('name')
except (ValueError, TypeError):
pass
elif self.instance.pk:
self.fields['rubrica'].queryset = self.instance.tipologia.rubrica_set.order_by('name')
home.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Dependent Dropdown in Django</title>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container"> <p><h1>Python Django Dependent Chained Dropdown List</h1></p>
<div class="card">
<div class="card-header">
Carregamento Form
</div>
<div class="card-body">
<form method="post" id="CarregamentoForm" data-rubricas-url="{% url 'ajax_load_rubricas' %}" class="form-horizontal" role="form">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" class="btn btn-info">
</form>
</div>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$("#id_tipologia").change(function () {
const url = $("#CarregamentoForm").attr("data-rubricas-url"); // get the url of the `load_rubricas` view
const tipologiaId = $(this).val(); // get the selected country ID from the HTML input
$.ajax({ // initialize an AJAX request
url: url, // set the url of the request (= /carregamento/ajax/load-rubricas/ )
data: {
'tipologia_id': tipologiaId // GET parameters
},
success: function (data) {
$("#id_rubrica").html(data);
}
});
});
</script>
</body>
</html>
Есть ли кто-нибудь, кто может помочь мне с этой задачей?