Si vous voulez dire l'étiquette du champ:
en utilisant le code de: Django Admin - Overriding the widget of a custom form field
# forms.py
from django import forms
from django.contrib import admin
class ProductAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProductAdminForm, self).__init__(*args, **kwargs)
self.fields['tags'].label = 'Custom Label'
Puis, dans votre objet ModelAdmin, vous spécifiez le formulaire:
from django.contrib import admin
from models import Product
from forms import ProductAdminForm
class ProductAdmin(admin.ModelAdmin):
form = ProductAdminForm
admin.site.register(Product, ProductAdmin)
Si vous voulez parler des étiquettes dans la liste déroulante, sélectionnez:
Remplacer le widget comme dans la réponse ci-dessus.
modifier:
Le champ de formulaire par défaut pour un champ de fk est un champ de choix du modèle. De la méthode docs
Le unicode du modèle sera appelé à générer chaîne représentations des objets à usage dans les choix du terrain; pour fournir des représentations personnalisées , sous-classe ModelChoiceField et remplacer label_from_instance. Cette méthode va recevoir un objet de modèle, et devrait retourner une chaîne appropriée pour le représentant. Par exemple:
class MyModelChoiceField(ModelChoiceField):
def label_from_instance(self, obj):
return obj.name_with_model()
puis:
class SmallPartAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(SmallPartAdminForm, self).__init__(*args, **kwargs)
self.fields['parent'] = MyModelChoiceField(queryset=Part.objects.all())
regard est comme vous me comprenez mal (ma question n'a pas été claire), je dois mettre à jour –
Vous pouvez le faire en remplaçant le widget. Comment modifiez-vous les valeurs? Basé sur une fonction? S'il vous plaît poster un code ou clarifier dans votre message. Merci! – DTing
J'ai mis à jour la question, j'ai ajouté le code –