методы в админке django - PullRequest
       6

методы в админке django

1 голос
/ 05 марта 2012

У меня есть две модели, Client и PaymentOptions.

class Client(models.Model):
    name = models.CharField(max_length=50, null=True, unique=False)
    contact = models.CharField(max_length=50, null=True, unique=False)
    address = models.CharField(max_length=300, null=True, unique=False)

class ClientPaymentOption(models.Model):
    name = models.CharField(max_length=30, null=True, unique=False, choices=CARD_TYPE)
    action = models.CharField(max_length=30, null=True, unique=False, choices=CLIENT_PAYMENT_OPTION)
    percent = models.FloatField(max_length=10, null=True, unique=False)
    fixamount = models.FloatField(max_length=20, null=True, unique=False)
    itemcharged = models.CharField(max_length=10, null=True, unique=False)

В моем admin.py я просто хочу, чтобы при создании нового Client он также создавал ClientPaymentOption.

У меня есть это в моем admin.py:

admin.site.disable_action('delete_selected')
class ClientAdmin(admin.ModelAdmin):
    #display list
    list_display = ('name','b_type','banner','logo',
                    'contact','address','account_type',
                    'status','currency','color','user',
                    )
    #display fields
    fields = ('name','b_type','banner','logo','contact',
              'address','account_type','status',
              'currency','color','user',
              )
    pass

admin.site.register(Client, ClientAdmin)

Я сделал это в моих views.py,

client = Client.objects.create( .... )
ClientPaymentOption.objects.create( ...., client=client )

но я не имею ни малейшего представления сделать это в админке django.

Кто-нибудь имеет представление о моей ситуации? заранее спасибо ...

1 Ответ

0 голосов
/ 05 марта 2012

Вы можете переопределить стандартное django-admin change_view и добавить ClientPaymentOption.objects.create( ...., client=client ) там. Краткий пример из django docs :

class MyModelAdmin(admin.ModelAdmin):

    # A template for a very customized change view:
    change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'

    def get_osm_info(self):
        # ...
        pass

    def change_view(self, request, object_id, extra_context=None):
        extra_context = extra_context or {}
        extra_context['osm_data'] = self.get_osm_info()
        return super(MyModelAdmin, self).change_view(request, object_id,
            extra_context=extra_context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...