Jak zastąpić domyślne wartości dla kluczowych pól kluczowych w Admin Django?


Tworzę modele, w których każdy model musi być powiązany z użytkownikiem, na przykład:
class Item(models.Model):
user = models.ForeignKey(User)

Ale w Django Admin, dla
Element
, pokazuje pole
Wybierz
ze wszystkimi użytkownikami wymienionymi przez ich nazwy użytkowników. Oprócz ich nazw użytkowników, muszę też wyświetlić nazwę pierwszej nazwy i
Last_name
Każdy użytkownik.
W jaki sposób wszystkie trzy pola mogą pojawić się razem na tej liście wyboru w interfejsie administratora Django?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby to zrobić, musisz utworzyć niestandardowy formularz i ustaw atrybut formularza w
Modeladmin
.
W tym
Formularz
musisz zastąpić pole pola Użytkownik w modelu do użytkownika
ModelChoicefield
.
ModelChoiceEfield ma metodę o nazwie
Label_From_instance
, musisz go zastąpić, aby uzyskać pełne imię i nazwisko.

Przykładowy kod
>
######################################
## models.py ##
######################################from django.db import models
from django.contrib.auth.models import Userclass Item(models.Model):
user = models.ForeignKey(User)
name = models.CharField("name", max_length=60) def __unicode__(self):
return self.name######################################
## forms.py ##
######################################from django import forms
from django.contrib.auth.models import Userfrom .models import Item
class CustomUserChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.get_full_name()
class ItemForm(forms.ModelForm):
user = CustomUserChoiceField(queryset=User.objects.all()) class Meta:
model = Item######################################
## admin.py ##
######################################from django.contrib import adminfrom .models import Item
from .forms import ItemForm
class ItemAdmin(admin.ModelAdmin):
form = ItemForm
admin.site.register(Item, ItemAdmin)


Link do kodu źródłowego
>
https://github.com/django/djan ... l948.
https://github.com/django/djan ... 3L948

powiązane kwestie
>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Django używa unicode (obj) (lub powiązanej z nim funkcji str (obj)) w kilku miejscach. Specjalnie do wyświetlania obiektu w serwisie administracyjnym Django oraz jako wartość wstawiana do szablonu, gdy obiekt jest renderowany.
Zobacz
__ Unicode __
https://docs.djangoproject.com/bath to/dev/model number/ref/models/instances
https://docs.djangoproject.com ... nces/
/
Możesz zmienić metodę
__unicode__
swojej klasy niestandardowej. Zobacz poniżej przykładowe kody.
from django.db import models
from django.contrib.auth.models import Userdef myunicode(self):
return self.get_full_name()# Create your models here.
class Item(models.Model):
User.__unicode__ = myunicode
user = models.ForeignKey(User)
name = models.CharField("name", max_length=60) def __unicode__(self):
return self.name

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się