商品とカテゴリの間に多対多の関係があります。私はmpttを使って管理者のカテゴリの表示を管理しています(これはうまくいきます)ので、カテゴリに商品を割り当てることができます。Django:mptt-djangoを使用して多対多の関係でカテゴリに商品を割り当てます。
カテゴリはうまくいきますが、私は問題を抱えています。私は
from django.forms import CheckboxSelectMultiple
from .models import Product,ProductCategory
from django.db import models
from django.contrib import admin
from mptt.admin import MPTTModelAdmin
from mptt.models import TreeManyToManyField
class ProductAdmin(admin.ModelAdmin):
formfield_overrides = {
TreeManyToManyField:{'widget':CheckboxSelectMultiple},
}
持っている私のadmin.pyで
from mptt.models import MPTTModel,TreeForeignKey,TreeManyToManyField
class ProductCategory(MPTTModel):
parent = TreeForeignKey('self', null=True, blank=True)
class Product(models.Model)
categories = TreeManyToManyField(ProductCategory)
をこれはほとんど仕事を取得しますが、すべてのカテゴリは以下のとおりです。私のmodels.pyで
私は(簡潔にするため切り捨て)していますあなたがサブカテゴリを持つカテゴリに商品を追加したくないので、私が望むものではないチェックボックスで表示されます。私が欲しいもの
あなただけのこの例ではので、子供を持っていないカテゴリに
Category 1
Category 2 sub sub
Category 3 sub
を製品を追加することができ、ラベルがあろうと、このようなカテゴリの表示である
Category 1
Category 2 > Catgory 2 sub > Category 2 sub sub
Category 3 > Category 3 sub
何か助けてくれてありがとうございました!
UPDATE
こんにちは、私は私の質問が広すぎるかもしれ実現!
Django newbieとして、私が行う必要があるのは、CheckboxSelectMultipleウィジェットをオーバーライドする可能性のあるカスタムウィジェットを作成することです。これを私の 'categories'モデル属性に適用できます。
formfield_overrides = {
TreeManyToManyField:{'widget':CheckboxSelectMultiple},
}
上述したように現時点では
は、私は、これは望ましい結果をもたらすだけでなく、むしろすべてのTreeManyToManyフィールドの標準CheckboxSelectMultipleを使用するよりもしないだけでなく、TreeManyToManyFieldためformfield_overridesを使用しています私が指定することができますこのウィジェットは私の 'categories'属性のためのものですか?
これにもかかわらず、カテゴリツリーに関する情報と選択された状態(すでにカテゴリに割り当てられている製品用)を渡すカスタムウィジェットを作成する方法を教えてください。私はこれを自分で整理しようとしてきましたが、苦労しています。
KARANTSTHRのCOMMENTここ
カテゴリのスクリーンショットは以下の更新 - 子を持たないカテゴリを示すのすべての良いが、前述したように、私たちは、ラベルにこれらのカテゴリに両親を表示することができますか?
UPDATE 2 KARANTSTHR TO
ここにあなたの実装とスクリーンショットです。
こんにちは、多くのありがとうございます。上記の私の画像を投稿した更新をご覧ください。子供がいないカテゴリだけが(正しく)表示されていますが、ラベルに親を表示することは可能ですか? – Newfoundland