Как изменить текст по умолчанию в форме django?

Я хотел бы, чтобы вы помогли мне изменить текст по умолчанию в формах, созданных django, в полях внешнего ключа на пользовательский текст.

Описание части содержимого Models.py

class Historial(models.Model):
    id_historial=models.AutoField(primary_key=True)
    id_equipo=models.ForeignKey("Equipo", on_delete=models.CASCADE, verbose_name="Numero Serial de la computadora")
    id_usuario=models.ForeignKey("Usuario", on_delete=models.CASCADE, verbose_name="Nombre del usuario")
    fecha_entrega = models.DateField ('Fecha de entrega', auto_now=True , auto_now_add=False)
    fecha_devolucion = models.DateField('Fecha de devolucion', auto_now=True , auto_now_add=False)
    qr_code = models.ImageField(upload_to="CodigosQR")
    recibido=models.BooleanField(default=False)

    class Meta:
        verbose_name="Historial"
        verbose_name_plural="Historial"

    def __str__(self):
        return f"{self.id_equipo}"

Описание части содержимого Forms.py

class HistorialForm(forms.ModelForm):
    id_equipo = forms.ModelChoiceField(queryset=Equipo.objects.filter(Prestado=False).filter(basura_electronica=False))
    id_usuario = forms.ModelChoiceField(queryset=Usuario.objects.filter(allow=True).filter(activo=True))
    def __init__(self, *args, **kwargs):
        super(HistorialForm, self).__init__(*args,**kwargs)
        self.fields['id_equipo'].widget.attrs['class'] = 'form-control'
        self.fields['id_equipo'].widget.attrs['placeholder'] = 'Numero serial de la computadora'
        self.fields['id_usuario'].widget.attrs['class'] = 'form-control'
        self.fields['id_usuario'].widget.attrs['placeholder'] = 'Nombre del usuario'
    class Meta:
        model = Historial        fields = [
            "id_equipo", "id_usuario",
        ]
        labels={
            "id_equipo":"Numero serial de la computadora",
            "id_usuario": "Nombre del usuario",
        }

Описание части содержимого Views.py

class ListadoHistorial(ListView):
    model=Historial
    form_class=HistorialForm
    template_name="prestamos/listar_prestamos.html"
    context_object_name="prestamos"
    queryset=None

    def get_queryset(self):
        return self.model.objects.all()

    def get_context_data(self, **kwargs):
        contexto={}
        contexto["prestamos"]=self.get_queryset()
        contexto["form"]=self.form_class
        return contexto

    def get(self, request, *args,**kwargs):
        return render(request, self.template_name, self.get_context_data())
    
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            form.save()
            return redirect("equipo:listar_prestamos")

Описание части содержимого prestamo.html

{% extends "index.html" %}
{% block titulo %}
Crear nuevo prestamo
{% endblock titulo %}
{% block body %}
    <form method="POST">
        {% csrf_token %}
        {% if error %}
        <h2>{{ error }}</h2>
        {% else %}
        {{ form.as_p }}
        <button type="submit">Guardar</button>
    </form>
        
{% endblock body %}
{% block extrajs %}
{% endblock extrajs %}

Захват формы с текстом по умолчанию во внешних ключах Захват enter image description here

Если вам нужно знать больше кода или изображения, давайте попросим прикрепить то, что необходимо

Используйте инициалы в своей форме.

ВашаФорма(initial={}), поместите значение как словарь между фигурными скобками.

Для будущих людей прилагаю ответ, который находится в self.fields['id_equipo'].label = 'Serial number of the computer'. Но я не уверен, потому что фильтрация не работает.

Forms.py

class HistorialForm(forms.ModelForm):
    id_equipo = forms.ModelChoiceField(queryset=Equipo.objects.filter(Prestado=False).filter(basura_electronica=False))
    id_usuario = forms.ModelChoiceField(queryset = Usuario.objects.filter(allow = True).filter(activo=True), initial="Nombre del usuario")
    def __init__(self, *args, **kwargs):
        super(HistorialForm, self).__init__(*args,**kwargs)
        self.fields['id_equipo'].widget.attrs['class'] = 'form-control'
        self.fields['id_equipo'].widget.attrs['placeholder'] = 'Numero serial de la computadora'
        self.fields['id_equipo'].widget.attrs['label'] = 'Numero serial de la computadora'
        self.fields['id_equipo'].label = 'Numero serial de la computadora'
        self.fields['id_usuario'].widget.attrs['class'] = 'form-control'
        self.fields['id_usuario'].widget.attrs['placeholder'] = 'Nombre del usuario'
    class Meta:
        model = Historial
        fields = [
            "id_equipo", "id_usuario",
        ]
        labels={
            "id_equipo":"Numero serial de la computadora",
            "id_usuario": "Nombre del usuario",
        }

Если вы хотите сделать это непосредственно в Model.

class Items(models.Model):
    name = models.CharField(max_length=10)

def getItem():
    item = Items.objects.get(pk=1)
    return item

class MyItem(models.Model):
    item = models.ForeignKey(Items, on_delete=models.CASCADE, default=getItem)
Вернуться на верх