在change_form模板Django中提交按钮的问题

时间:2012-06-11 19:25:50

标签: python django many-to-many submit

我是Django和Python的新手,我仍然混淆了如何从多个字段相关的查找预填充值作为Prepopulate tabularinline with value from related lookup in manytomany field中的问题 这是我的模特:

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,同一页面中的a.k.a不需要刷新页面(不是更改列表页面或实际提交)。 2.我怎样才能获得相关查找产品的实例&#39;来自提交按钮的fieldset(manytomany),以便我可以访问父值(类产品)并预填充所有到tabularinline(Class Foo或中间类)?

仅供参考,提交按钮位于所有字段集下方。

任何人都应该帮助我:(。谢谢你的好意回复:)。

2 个答案:

答案 0 :(得分:0)

你的问题是,这个

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

只会将您的提交按钮发送回您的服务器。 form-tag需要覆盖每个表单元素。

只需删除:<form action="" method="post"></form> 它可能会奏效。

答案 1 :(得分: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,)

你需要测试一下,因为我不能(实际上)