0

私はDjangoとPythonを初めて使用し、多対多フィールドに関連するルックアップからの値を多対多フィールドに関連するルックアップからの値で表形式で事前入力する私の質問として、多対多フィールドに関連するルックアップから値を事前入力する方法についてまだ混乱しています 私のモデルです:

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'フィールドセット(多対多)のインスタンスを取得するにはどうすればよいですか?すべて表形式のインライン(クラスFooまたは中間クラス)に?

参考までに、送信ボタンはすべてのフィールドセットの下にあります。

誰もが私を助けてください:(。あなたの親切な応答をありがとう:)。

4

2 に答える 2

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,)

(実際には)できないので、それをテストする必要があります

于 2012-06-12T16:41:41.840 に答える
0

あなたの問題は、これが

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

送信ボタンをサーバーに送り返すだけです。フォームタグはすべてのフォーム要素を囲む必要があります。

を削除するだけ<form action="" method="post"></form> 、うまくいくかもしれません。

于 2012-06-12T16:08:18.470 に答える