我的模特:
class Contact(models.Model):
first_name = models.CharField(_("First name"), max_length=30, )
last_name = models.CharField(_("Last name"), max_length=30, )
email = models.EmailField(_("Email"), blank=True, max_length=75)
class PhoneNumber(models.Model):
contact = models.ForeignKey(Contact)
phone = models.CharField(_("Phone Number"), blank=True, max_length=30, )
primary = models.BooleanField(_("Primary"), default=False)
我的admin.py:
class ContactOptions(AutocompleteAdmin):
list_display = ('last_name', 'first_name')
ordering = ['last_name']
search_fields = ('first_name', 'last_name', 'email')
related_search_fields = { """??? I want to search the Phone Numbers ???""" }
如何在Django管理员中搜索电话号码?请给出一些代码。非常感谢你!
答案 0 :(得分:9)
万一有人提出这个问题,在Django 1.6中,反向搜索确实是可能的。
在手机型号中,将 related_name =“phonesList”添加到联系人字段
contact = models.ForeignKey(Contact, related_name="phonesList")
现在在search_field中你可以使用双非意外来自conatct到这样的手机: 的 phonesList__phone 强>
search_fields = ('first_name', 'last_name', 'email','phonesList__phone')
答案 1 :(得分:7)
更新:此答案已过时,请参阅answer from elsadek而不是
您要求能够遵循反向关系(即,从PhoneNumber返回到联系人)但我不相信跨越表的双下划线__
技巧将在此处起作用。
如果您的联系人拥有PhoneNumber模型的密钥而不是当前设置:
class Contact(models.Model):
...
phone = models.ForeignKey(PhoneNumber)
然后在admin配置中你可以这样做:
search_fields = ('first_name', 'last_name', 'email', 'phone__phone')