Search_fields in django python

I was wondering how I can use a foreign key for preliminary search, for example,

class Product(models.Model): name = models.CharField(max_length = 127) description = models.TextField() code = models.CharField(max_length = 127) def __unicode__(self): return self.name + " - " + self.code class ProductLot(models.Model): product = models.ForeignKey(Product) code = models.CharField(max_length = 30) lot_no = models.CharField(max_length = 30) location = models.CharField(max_length = 127) incoming = models.IntegerField() commited = models.IntegerField() available = models.IntegerField() reorder = models.IntegerField() created_date = models.DateField(auto_now_add=True) def __unicode__(self): return self.code + " - " + self.product.name + " - " + self.lot_no class LotComment(models.Model): product_lot = models.ForeignKey(ProductLot) comment_user = models.ForeignKey(User, null=True) comment_text = models.TextField() created_date = models.DateField(auto_now_add=True) def __unicode__(self): return self.product_lot.product.code + " - " + self.product_lot.product.name + " - " + self.product_lot.lot_no + " - " + str(self.created_date) 

than in my admin.py file, I have

 from CMS.Inventory.models import Product class padmin(admin.ModelAdmin): search_fields=['name', 'description', 'code', 'lot_no' ] admin.site.register(Product, padmin) 

but I want LotComments to be able to use the same search fields as Product for the ect code.

I hope I explained it well

+7
python django-admin
source share
3 answers

You can specify related field searches in admin search_fields in the same way as in Django requests. Check the documentation. For a LotComments object LotComments search_fields will look something like this:

 search_fields = ['product_lot__product__name', 'product_lot__product__description', 'product_lot__product__code', 'product_lot__lot_no'] 
+16
source share

Adding to previous answers. I would suggest Django Admin Transition Filters

The user of this plugin is to add preliminary search and maintain support for preliminary search. Also in your case, foreign key fields can be mapped to a name.

 class padmin(AdminAdvancedFiltersMixin, admin.ModelAdmin): advanced_filter_fields = ('name', ('product_lot__product__name', 'Product name')) 
+2
source share

To reference a foreign key, use __ (two underscores):

 from CMS.Inventory.models import Product class ProductAdmin(admin.ModelAdmin): search_fields=['name__name', 'description', 'code', 'lot_no' ] admin.site.register(Product, padmin) 
+1
source share

All Articles