Как показать foregin key другой модели django в полях django admin или наборах полей django admin
У меня есть две модели Django: Bot и Seller.
class Bot (models.Model):
nick_name = models.CharField (verbose_name="Nick Name", max_length=100)
wallet_coins = models.CharField (verbose_name="Bot Coins", max_length=30, default="0")
wallet_coins_initial = models.CharField (verbose_name="Initial Coins", max_length=30, default="0")
order_amount = models.CharField (verbose_name="Order Amount", max_length=30, default="0")
## it's obtained from sum of initial-coins and order-amount:
final_coins = models.CharField (verbose_name="Final Coins", max_length=30, default="0")
class Seller (models.Model):
bot = models.ForeignKey ('Bot', on_delete=models.CASCADE, verbose_name="Bot Name", blank=True, null=True)
market = models.ManyToManyField ('MarketTransfer', verbose_name="Market Card(s)")
name = models.CharField (verbose_name="Seller Name", max_length=100)
price_ratio = models.CharField (verbose_name="Price Ratio", max_length=10, default="1.5")
emulate_final_coins = models.CharField ( verbose_name="Emulated Final Coins", max_length=30, default="0")
Когда я хочу использовать свойство fields или fieldsets для изменения порядка полей, я вижу ошибку ниже:
Изображение ошибки: https://imgur.com/a/HxgcN24
.FieldError at /admin/ea_app/seller/1/change/
Неизвестное поле (поля) (show_bot_name) указано для Продавца. Проверьте
fields/fieldsets/exclude атрибуты класса SellerAdmin.
Я хочу изменить расположение полей в Django Admin. Коды ниже работают без проблем. но мне нужно изменить расположение полей. к сожалению, я вижу ошибку (картинка выше).
class SellerAdminInLine (admin.TabularInline):
model = Seller.market.through
verbose_name = "In-Use Cards"
verbose_name_plural = "In-Use Cards"
class SellerAdmin (admin.ModelAdmin):
readonly_fields = ['total_price', 'show_bot_coins', 'show_bot_final_coins', 'emulate_final_coins']
list_per_page = 10
list_display_links = ['name']
list_display = ['name', 'wallet_coins', 'price_ratio', 'show_bot_name', 'show_bot_coins', 'added_at']
search_fields = ['show_bot_name', 'name']
filter_horizontal = ['market']
inlines = [SellerAdminInLine]
###fields = [('show_bot_name',)]
@admin.display(description="Bot Name")
def show_bot_name (self, obj):
return (obj.bot.ea_username + " <|> " + obj.bot.nick_name)
@admin.display(description="Bot Coins")
def show_bot_coins (self, obj):
return obj.bot.wallet_coins
@admin.display(description="Bot Final Coins")
def show_bot_final_coins (self, obj):
return obj.bot.final_coins
@admin.display(description="Total Price")
## it's obtained from sum of active-transfer cards within the BOT.
def total_price (self, obj):
return obj.bot.wallet_coins
admin.site.register (Seller, SellerAdmin)
изображение кодов выше:
примечание: также я хочу иметь возможность выбирать бота из другой модели. добавление "show_bot_name" в readonly_fields не решает мою проблему.