Wierzę, że odpowiedź na mój problem jest prosta, ale nie mogę go nigdzie znaleźć. Oto moje kłopotliwe położenie. Mam dwa modele: członek i MemberDetail, które są w stosunku oneToOne tak:Administrator Django: Jak wyświetlić wartość pól z listing_pisemią z dwóch modeli, które są w relacji oneToOne?
class Member(models.Model):
ID = models.AutoField(primary_key=True)
FIRST_NAME = models.CharField('First name', max_length=50)
LAST_NAME = models.CharField('Last name', max_length=50)
def __unicode__(self):
return u'%s %s' % (self.FIRST_NAME, self.LAST_NAME)
class MemberDetail(models.Model):
member = models.OneToOneField(Member, primary_key=True)
DATE_OF_BIRTH = models.DateField('Date of birth')
EMAIL = models.EmailField('E-mail')
PHONE = models.CharField('Phone', max_length=15)
Teraz w moim admin.py Chcę pokazać tabeli dla państw ze wszystkich swoich danych, na przykład:
class MemberDetailInline(admin.TabularInline):
model = MemberDetail
class MemberAdmin(admin.ModelAdmin):
list_display = ("FIRST_NAME", "LAST_NAME", "date_of_birth", "email", "phone")
inlines = [
MemberDetailInline,
]
admin.site.register(Member, MemberAdmin)
Po prostu nie wiem, jak napisać "date_of_birth", "e-mail" i "telefon" część listy display_play. Najbliższą rzeczą, jaką mogłem zrobić, było dodanie tego po inline:
def date_of_birth(self, MemberDetail):
return MemberDetail.DATE_OF_BIRTH
def date_of_birth(self, MemberDetail):
return MemberDetail.EMAIL
def date_of_birth(self, MemberDetail):
return MemberDetail.PHONE
, ale pola pokazały puste na stronie. Jakie jest rozwiązanie? Dzięki.
Dzięki za powtórkę. Jestem zdezorientowany przez część "member_detail__email". Próbowałem, ale jeśli dodam, Django zgłasza błąd, który nie jest wywoływalny lub atrybut "MemberAdmin" lub znaleziony w modelu "Member". Znalazłem kod, który wygląda jak rozwiązanie. Działa jak Member.objects.get(), ale nie wiem, jak to zrobić. – sninja
jakie masz opcje? Zwykle daje ci listę. – Colleen
Kolejny ślepy zaułek. Mówi zbyt wiele wartości do zdobycia lub coś w tym stylu. Podoba mi się twój pomysł z backref, ale po prostu nie rozumiem, jak to napisać. Chcę, aby rozwiązanie było eleganckie, na przykład: Member__MemberDetail__EMAIL. Ale jeśli wystąpił błąd "" i błąd "" w środku. Może coś mi brakuje. Chodzi o to, że członek nie rejestruje MemberDetail. Robi to na formularzu dodawania przez administratora lub formularza zmiany. Ale w widoku listy nie mogę pokazać tych pól z elementu MemberDetail. – sninja