2013-04-17 20 views
13

Mam kilka modeli:Jak wyświetlić listę odwrotnych wyszukiwań ForeignKey w interfejsie administratora DJango?

class Customer(models.Model): 
    customer_name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return self.customer_name 

    class Meta: 
     ordering = ('customer_name',) 

class Unit(models.Model): 
    unit_number = models.IntegerField() 
    rentable = models.BooleanField() 
    owner = models.ForeignKey(Customer, related_name='units', blank=True, null=True) 

    def __unicode__(self): 
     return str(self.unit_number) 

    class Meta: 
     ordering = ('unit_number',) 

Mam interfejs administracyjny działa dobrze, gdy Dodaję jednostkę (mogę wybrać, które klient go do przypisania), ale kiedy idę do tworzenia/edytowania klient w interfejsie administratora DJango, nie wyświetla żadnych jednostek do wyboru. Jak mogę włączyć wyszukiwanie w tej sekcji, aby dopasować ją do obszaru tworzenia/edycji klienta?

Odpowiedz

36

Domyślnie ModelAdmin pozwala tylko zarządzać modelem "sam", a nie pokrewnymi modelami. Aby edytować powiązany model jednostki, musisz zdefiniować "InlineModelAdmin" - taki jak admin.TabularInline - i dołączyć go do swojego CustomerAdmin.

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects

Na przykład, w admin.py:

from django.contrib import admin 
from models import Customer, Unit 

class UnitInline(admin.TabularInline): 
    model = Unit 

class CustomerAdmin(admin.ModelAdmin): 
    inlines = [ 
     UnitInline, 
    ] 
admin.site.register(Customer, CustomerAdmin) 
Powiązane problemy