13

ho un paio di modelli:Come visualizzare un elenco di ricerche inverse di ForeignKey nell'interfaccia di amministrazione di 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',) 

ho l'interfaccia di amministrazione che funziona benissimo quando si aggiunge un'unità (posso selezionare quale cliente per assegnarlo a), ma quando vado a creare/modificare una cliente nell'interfaccia dell'amministratore di DJango, non elenca nessuna unità tra cui scegliere. Come posso abilitare la ricerca in quella sezione in modo che corrisponda a quella nell'area di creazione/modifica del cliente?

risposta

36

Per impostazione predefinita, ModelAdmin consente solo di gestire il modello "stesso", non i modelli correlati. Per modificare il modello di unità relativo, è necessario definire un "InlineModelAdmin", ad esempio admin.TabularInline, e collegarlo a CustomerAdmin.

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

Per esempio, nella vostra 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) 
Problemi correlati