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
Yo tengo ese codigo. Desafortunadamente, el error viene en admin.py con elManyToManyField
class PurchaseOrderAdmin(admin.ModelAdmin):
fields = ['product', 'dollar_amount']
list_display = ('product', 'vendor')
El error dice:
'PurchaseOrderAdmin.list_display [0]', 'product' es un ManyToManyField que no es compatible.
Sin embargo, se compila cuando saco 'product'de list_display. Entonces, ¿cómo puedo mostrar 'product'en list_displaysin darle errores?
Editar : Tal vez una mejor pregunta sería ¿cómo mostrar una ManyToManyFielden list_display?
fuente

get_queryset()método optimizado para ustedModelAdmin, consulte stackoverflow.com/questions/12354099/…cached_propertyayudaría. Pero creo que probablemente no lo haría. Cuando usa un optimizadoget_queryset, puede, por ejemplo, anotar / preprocesar los datos allí, como hacer la concatenación de productos en SQL en lugar de en Django, y almacenar sus datos personalizados en su conjunto de consultas. Entonces solo necesitaría ejecutar esa lógica una vez en SQL y no para cada fila cuando se acceda a la propiedad.get_queryset, simplemente no he podido leer los documentos completos (ni encontré un ejemplo lo suficientemente simple de lo que debería estar haciendo)De esta manera, puede hacerlo, consulte el siguiente fragmento:
class Categories(models.Model): """ Base category model class """ title = models.CharField(max_length=100) description = models.TextField() parent = models.ManyToManyField('self', default=None, blank=True) when = models.DateTimeField('date created', auto_now_add=True) def get_parents(self): return ",".join([str(p) for p in self.parent.all()]) def __unicode__(self): return "{0}".format(self.title)Y en su método de llamada del módulo admin.py de la siguiente manera:
class categories(admin.ModelAdmin): list_display = ('title', 'get_parents', 'when')fuente