2012-03-05 6 views
1

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

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 администратора.

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

ответ

0

Вы можете переопределить стандартный 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)