2015-10-15 60 views
0

我有一個CateringOrder模型的模型管理員,它有一個多對多表中的餐館列表。這些可以在我包含的InlineModelAdmin上添加和修改。訪問來自父級的InlineModelAdmin的表單數據Admin

我想訪問內聯表單上的表單字段。我注意到他們可以在form.data中訪問,但我覺得必須有一個更簡單的方法。

這裏是我的代碼:

class CateringOrderRestaurantForm(forms.ModelForm): 
    notify = forms.BooleanField(label="Notify?", required=False) 

    def save(self, _request, catering_order_restaurant, form, change): 
     import pdb;pdb.set_trace() 
     catering_order_restaurant.save() 


class CateringOrderRestaurantInline(admin.TabularInline): 
    model = CateringOrderRestaurant 
    form = CateringOrderRestaurantForm 

    notify = forms.BooleanField(label="Notify?", required=False) 
    fields = ["restaurant", "priority"] 
    list_display = ("restaurant", "priority", "notify") 
    raw_id_fields = ["restaurant"] 
    extra = 1 

class CateringOrderAdmin(admin.ModelAdmin): 
    fields = [ 
     "status", 
     "super_hub", 
     "delivery_location", 
     "delivery_date", 
     "delivery_preference", 
     "non_vegetarians", 
     "vegetarians", 
     "vegans", 
     "headcount", 
     "rough_budget_per_head", 
     "dietary_notes", 
     "additional_requests", 
     "delivery_notes", 
    ] 

    list_display = ('id', 'delivery_location', 'super_hub', 'status', 'delivery_date', 'headcount', 'budget') 
    list_filter = ('status', 'delivery_date',) 
    readonly_fields = ('status', 'headcount',) 
    search_fields = ('delivery_location__company__name', 'delivery_preference',) 
    raw_id_fields = ["delivery_location"] 
    actions = ['cancel', 'finalize_orders'] 

    inlines = (
     CateringOrderRestaurantInline, 
     CateringOrderItemInline 
    ) 

    def save_model(self, _request, catering_order, form, change): 
     import pdb;pdb.set_trace() 
     catering_order.save() 

     if not change: 
      email_inquiry(catering_order) 

我需要訪問在CateringOrderAdmin的覆蓋save_model方法的通知字段的值。

回答

0

所以我想通了,如果你重寫save_related方法所需的數據將被傳入。只是使用了錯誤的方法...