Администратор Django: Как показать и скрыть поля на основе приложения? - PullRequest
0 голосов
/ 28 апреля 2019

Вот текущий сценарий:

У меня есть модель Transaction в приложении "payment"

Я хочу добавить paypal_xyz_field в этой модели Transaction,после установки нового приложения payment_paypal.

, т. е. расширить Transaction в приложении paypal и добавить поле paypal_xyz_field

Какой будет подход?Если я расширю модель транзакции, мне придется показать как paypalTransaction, так и Transaction в админке.

В админе я хочу показать только одну модель "Transaction" с paypal_xyz_field, paymill_xyz_field, stripe_xyz_field не paypalTransaction, stripeTransaction и т. Д.

Кроме того, вы хотите автоматически добавлять / удалять поля из DB / admin на основеприложений

# payment/models.py
from django.db import models

class Payment(models.Model):
    base_field = models.CharField(max_length=64)

# paypal/models.py
from django.db import models
from payment.models import Payment

class Payment(Payment):
    paypal_specific_field = models.CharField(max_length=64)

# stripe/models.py
from django.db import models
from payment.models import Payment

class Payment(Payment):
    stripe_specific_field = models.CharField(max_length=64)

1 Ответ

0 голосов
/ 29 апреля 2019

добавить редактируемый атрибут в поле модели и установить его в False.

from django.db import models

class Payment(models.Model):
    base_field = models.CharField(max_length=64)
...