【问题标题】:Problems with submit button in change_form template Djangochange_form模板Django中的提交按钮问题
【发布时间】:2012-06-11 19:25:50
【问题描述】:

我是 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 ,也就是在同一页面中不需要刷新页面(而不是 change_list 页面或实际提交)。 2. 如何从提交按钮获取相关查找'produks' 字段集(manytomany)的实例,以便我可以访问父值(产品类)并将所有内容预填充到表格行(Foo 类或中间类)?

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

请任何人帮助我:(。感谢您的友好回复:)。

【问题讨论】:

    标签: python django many-to-many submit


    【解决方案1】:

    你的问题是,这个

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

    只会将您的提交按钮发送回您的服务器。 表单标签需要围绕每个表单元素。

    只需删除:&lt;form action="" method="post"&gt;&lt;/form&gt; 它可能会起作用。

    【讨论】:

    • 哦,我明白了,我已将其删除。但现在我的问题是,如何从字段集“Kode Produk”(produks manytomany 字段)中获取实例,然后将它们传递给我的中间模型 Foo ?对不起,如果我问你太多,谢谢:)。
    • 这就是 stackoverflow 的全部内容 :) 我在这里为您解答问题 :)
    • “admin/POS/Pemesanan/inline/tabular.html”是否扩展了“admin/edit_inline/tabular.html”?
    • 哦,是的,我想扩展 'admin/edit_inline/tabular.html' 以便我可以在单击输入按钮后预填充到 tabularinline 中的字段(与我之前的问题相同:D.)。但现在,我仍然不知道如何。我之前搜索过,一篇文章说我必须使用javascript。但是,我真的是一个新手;(。你知道吗?谢谢你:D。
    【解决方案2】:

    据我了解,您想显示订单 (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,)
    

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

    【讨论】:

    • 不,不是真的那样 :D。但我想显示 Product 中的所有值(通过我之前在我的问题上发布的 UI 中的字段集“Kode Produk”中的相关查找获得:D.)到 change_form 类 Order 中的内联 Item。对不起,如果我的问题对你来说不清楚;(非常感谢:)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2011-06-26
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    相关资源
    最近更新 更多