我有2个型号分类和产品。类别对自己有一个FK,而对公司有一个FK。
class Product(Meta):
categories = models.ManyToManyField(Category, related_name='products')
class Category(SEO, MetaData):
parent = models.ForeignKey('self', blank=True, null=True, verbose_name='parent category', on_delete=models.CASCADE)
在产品创建/编辑页面的Django Admin中,我需要选择父类别。
此刻只是一个长选择框,名称为Categories。我想介绍category-subcategory的所有路径。
例如:
Now: Category A Name
Need: Category Parent Name :: SubCategory Parent Name :: Category A Name
我不想修改def __str__
因为在其他地方也使用过。
答案 0 :(得分:1)
您可以使用这样的自定义ModelForm
:
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = '__all__' # It's actually best to list the fields out as per Two Scoops of Django
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['categories'].label_from_instance = \
lambda obj: obj.enumerated_path
将enumerated_path
替换为Product
模型的属性/方法的名称。不要忘记在ModelAdmin
添加form = ProductForm
时使用该表单。