2012-03-05 268 views
1

我有兩個模型,ClientPaymentOptions方法在Django管理員

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)