2012-06-11 41 views
0

使用Django和Python,和IM即時通訊新仍然混淆有關如何從多對多領域相關的查找在Prepopulate tabularinline with value from related lookup in manytomany field 這裏預填充值作爲我的問題是我的模型:在change_form模板提交按鈕問題的Django

class Product(models.Model): 
    product_name= models.CharField(max_length=50) 
    price = models.DecimalField(max_digits=10, decimal_places=2, default=Decimal('0.00')) 
    tax_per_item = models.DecimalField(max_digits=10, null=True, blank=True, decimal_places=2, default=Decimal('0.00')) 
    discount_per_item = models.DecimalField(max_digits=10, null=True, blank=True, decimal_places=2, default=Decimal('0.00')) 


class Order(models.Model): 
    produks = models.ManyToManyField(Product, verbose_name=u"Kode Produk") 
    no_customer = models.ForeignKey(Customer, null=True, blank=True, related_name='%(class)s_kode_cust') 

    def order_view(request): 
     if 'enter' in request.POST: 
      #response to tabular.html template 
      return HttpResponseRedirect('/admin/POS/Pemesanan/inline') 

class Foo(models.Model): 
    product = models.ForeignKey(Product, editable=False) 
    pemesanan = models.ForeignKey(Order) 
    quantity = models.IntegerField() 
    price = models.IntegerField() 
    discount = models.IntegerField() 
    tax = models.IntegerField() 

這裏是我的管理:

class PemesananAdmin(admin.ModelAdmin): 
fieldsets = (
    ('Customer in Time (Person)', { 
     'fields': ('no_customer',), 
    }), 
    ('Date', { 
     'fields' : ('date', 'delivery_date',), 
    }), 
    ('Order Details', { 
     'fields' : ('produks',), 
    }), 
) 
search_fields = ['produks', 'no_customer'] 
raw_id_fields = ('produks', 'no_customer',) 
related_lookup_fields = { 
'fk': ['no_customer'], 
'm2m': ['produks'], 
} 
inlines = [ 
    FooInline, 
] 

class FooInline(admin.TabularInline): 
model = Foo 
template = 'admin/POS/Pemesanan/inline/tabular.html' 
extra = 0 
allow_add = True 

,這裏是我的change_form覆蓋模板:

{% extends "admin/change_form.html" %} 
{% block after_field_sets %}{{ block.super }} 

<form action="" method="post"> 
<input type="submit" name="enter" value="Enter" /> 
</form> 
{% endblock %} 

但是,還是沒有人能告訴我如何:(。 (如果您請在該頁面上回答我的問題)。現在,我對2個問題感到困惑: 1.我希望change_form中的提交按鈕在同一頁面中重定向到change_form too a.k.a,不需要刷新頁面(不需要change_list頁面或實際提交)。 2.如何從提交按鈕中獲取相關查找'produks'字段集(manytomany)的實例,以便我可以訪問父類值(Class Product)並將所有內容預填充爲tabularinline(Class Foo或中間類)?

僅供參考,提交按鈕低於所有字段集。

任何人都可以幫我請:(謝謝你的迴應:)。

回答

0

你的問題是,這

<form action="" method="post"> 
<input type="submit" name="enter" value="Enter" /> 
</form> 

只會發送您的提交按鈕返回到您的服務器。形式標籤需要對每個表單元素進行追蹤。

剛刪除:<form action="" method="post"></form> 它可能工作。

+0

哦我明白了,我已將其刪除。但現在我的問題是,我如何從fieldset「Kode產品」(produks manytomany字段)中獲取實例,然後將它們傳遞給我的中介模型Foo?對不起,如果我太多問你,謝謝你:)。 – Lena

+0

這是什麼stackoverflow是關於:)我在這裏爲您的問題:) –

+0

'admin/POS/Pemesanan/inline/tabular.html'延伸'admin/edit_inline/tabular.html'? –

0

因爲我正確理解您要顯示訂單(Order)及其項目(Foo)?

我天真的解決辦法是:

class Product(models.Model): 
    ... 

class Order(models.Model): 
    products = models.ManyToManyField(Product, through='Item') 

class Item(models.Model): 
    order = models.ForeignKey(Order) 
    product = models.ForeignKey(Product) 
    quantity = models.IntegerField() 
    ... 

,管理員可以如此簡單:

class ItemInline(admin.TabularInline): 
    model = Item 

class OrderAdmin(admin.ModelAdmin): 
    inlines = (ItemInline,) 

你需要測試,因爲我不能(實際上)

+0

不,不是那樣的:D。但是我想顯示產品的所有值(通過fieldset「Kode產品」在我之前發佈在我的問題中的UI中:D。)在change_form class Order中內聯項目。如果我的問題對您不明確,則表示抱歉;(非常感謝:)。 – Lena