Reputation: 11730
I'm at a bit of a loss on how to correctly reference foreign key values when looking at the Admin page in Django 1.8.
What I am getting:
Note that the foreign key displays correctly in the left column, but not in the right (using for verification), nor does it show when you click into one of the records, which is where I require it to display.
What I want:
I want the second image to display 4147128
instead of WorldEaseConsignee object
.
Code
admin.py
from django.contrib import admin
from .models import WorldEaseConsignee, WorldEaseInvoice
class WorldEaseConsigneeAdmin(admin.ModelAdmin):
list_display = (
'order_number',
)
class WorldEaseInvoiceAdmin(admin.ModelAdmin):
@staticmethod
def get_order_number(obj):
return obj.order_number.order_number
list_display = (
'get_order_number', 'order_number_id'
)
search_fields = [
'order_number__order_number',
]
admin.site.register(WorldEaseConsignee, WorldEaseConsigneeAdmin)
admin.site.register(WorldEaseInvoice, WorldEaseInvoiceAdmin)
models.py subset
class WorldEaseInvoice(models.Model):
class Meta:
verbose_name = 'WorldEase Invoice List'
verbose_name_plural = 'WorldEase Invoice List'
unique_together = ('order_line', 'order_number')
order_number = models.ForeignKey(
WorldEaseConsignee,
to_field='order_number',
)
def __unicode__(self):
return self.name
class WorldEaseConsignee(models.Model):
class Meta:
verbose_name = 'WorldEase Consignee List'
verbose_name_plural = 'WorldEase Consignee List'
order_number = models.IntegerField(
null=False,
blank=False,
default=0,
unique=True,
)
def __unicode__(self):
return self.order_number # I've also tried self.name
Upvotes: 0
Views: 786
Reputation: 599450
Since you are using Python 3, you should be defining __str__
methods instead of __unicode__
.
Upvotes: 2