class PurchaseOrder(models.Model):
product = models.ManyToManyField('Product')
vendor = models.ForeignKey('VendorProfile')
dollar_amount = models.FloatField(verbose_name='Price')
class Product(models.Model):
products = models.CharField(max_length=256)
def __unicode__(self):
return self.products
Ich habe diesen Code. Leider kommt der Fehler in admin.py mit demManyToManyField
class PurchaseOrderAdmin(admin.ModelAdmin):
fields = ['product', 'dollar_amount']
list_display = ('product', 'vendor')
Der Fehler lautet:
'PurchaseOrderAdmin.list_display [0]', 'product' ist ein ManyToManyField, das nicht unterstützt wird.
Allerdings stellt es , wenn ich nehme 'product'
von out list_display
. So wie kann ich Anzeige 'product'
in list_display
ohne es eine Fehlermeldung?
bearbeiten : Vielleicht wäre eine bessere Frage, wie Sie ein ManyToManyField
in anzeigen list_display
?
quelle
get_queryset()
Methode für Ihre implementieren könnenModelAdmin
, siehe stackoverflow.com/questions/12354099/…cached_property
würde helfen. Aber ich denke es würde wahrscheinlich nicht. Wenn Sie eine optimierte Version verwendenget_queryset
, können Sie beispielsweise die Daten dort mit Anmerkungen versehen / vorverarbeiten, z. B. die Verkettung von Produkten in SQL anstelle von Django, und Ihre benutzerdefinierten Daten in Ihrem Abfragesatz speichern. Dann müssten Sie diese Logik nur einmal in SQL ausführen und nicht für jede Zeile, wenn auf die Eigenschaft zugegriffen wird.get_queryset
, ich bin einfach nicht dazu gekommen, die vollständigen Dokumente zu lesen (noch habe ich ein einfaches Beispiel dafür gefunden, was ich tun sollte)Auf diese Weise können Sie das folgende Snippet überprüfen:
Rufen Sie in Ihrem Modul admin.py die folgende Methode auf:
quelle