Как вывести объект foreignkey вместо всего класса в администрацию Django

В моем файле 'models.py' есть 2 таблицы LOOKUP: класс 'Part' и класс 'Vendor', как показано на рисунке:

# Part Lookup table
class Part(models.Model):
    part_id = models.CharField(max_length=64)                               # Part ID
    description = models.CharField(max_length=64)                           # Part description
    pq = models.DecimalField(max_digits=7, decimal_places=2)                # Pack quantity
    mrrp = models.DecimalField(max_digits=10, decimal_places=2)             # Manufacturers Recommended Retail Price                                         
    # Display something in admin
    def __str__(self):
        return f"{self.id} {self.part_id} {self.description} {self.pq} {self.mrrp}"   

# Vendor Lookup table
class Vendor(models.Model):
    name = models.CharField(max_length=64)                         
    # Display something in admin
    def __str__(self):
        return f"{self.id} {self.name}"  

Затем у меня есть еще одна таблица FACT или ASSOCIATION, класс 'Relationship', как показано на рисунке:

# Relationship association table (Between Part & Vendor)
class Relationship(models.Model):
    part_id = models.ForeignKey(Part, on_delete=models.CASCADE, related_name="part")  
    vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE, related_name="vendor")  
    # Display something in admin
    def __str__(self):
        return f"{self.id} {self.part_id} {self.vendor_id}"  

Ниже приведен весь мой файл 'admin.py':

from django.contrib import admin

# Import the classes from models.py
from .models import Part, Vendor, Relationship, Transaction, Offer, Supersession, Category, Group

# Django admin title
admin.site.site_header = "Online Parts System"

# Model Admin class
class PartAdmin(admin.ModelAdmin):
    # Data headers (must match objects of the Part class)
    list_display = ('id', 'part_id', 'description', 'pq', 'mrrp')

# Model Admin class
class VendorAdmin(admin.ModelAdmin):
    # Data headers (must match objects of the Vendor class)
    list_display = ('id', 'name')

# Model Admin class
class RelationshipAdmin(admin.ModelAdmin):
    # Data headers (must match objects of the Vendor class)
    list_display = ('id', 'part_id', 'vendor_id')

# Register your models here.
admin.site.register(Part, PartAdmin)
admin.site.register(Vendor, VendorAdmin)
admin.site.register(Relationship, RelationshipAdmin)

Пока все работает очень хорошо. К сожалению, на странице администрирования Django > Таблица Relationships, в колонке 'Part ID', я вижу каждый объект класса 'Part' (поскольку я использовал строку ForeignKey)

Я хочу видеть только один объект, например 'part_id', а не все остальные вместе взятые.

Какой самый простой способ достичь этого?

Пожалуйста, посмотрите изображение ниже. В основном я хочу упростить строку, подчеркнутую красным цветом.

Страница администратора Django на данный момент

Строка, используемая в панели администратора в колонке part_id, берется из метода __str__ модели Part. Вы можете изменить реализацию метода __str__, чтобы включить только part_id.

# Part Lookup table
class Part(models.Model):
    part_id = models.CharField(max_length=64)                               # Part ID
    description = models.CharField(max_length=64)                           # Part description
    pq = models.DecimalField(max_digits=7, decimal_places=2)                # Pack quantity
    mrrp = models.DecimalField(max_digits=10, decimal_places=2)             # Manufacturers Recommended Retail Price                                         
    # Display something in admin
    def __str__(self):
        return f"{self.part_id}"
Вернуться на верх