私は別のWebサイトから製品を取得しているアグリゲーターアプリケーションに取り組んでいます。各製品には、サブカテゴリ、カラー、パタンが関連付けられています。 (例えば、長袖の青い横縞のTシャツ。)ここでは、サブカテゴリは長袖のTシャツと青と柄のストライプです。私は、問題は、私はその色と下のパターン下のサブカテゴリを表示するために必要なフロントエンドのサイドバーにあるすべてのものは大丈夫です。このティルこのDjangoモデルの関係
from __future__ import unicode_literals
from django.db import models
from smart_selects.db_fields import ChainedForeignKey,ChainedManyToManyField
# Create your models here.
class Category(models.Model):
title=models.CharField(max_length=255)
def __str__(self):
return self.title
class Product(models.Model):
title=models.CharField(max_length=255)
price=models.DecimalField(max_digits=10,decimal_places=4,null=True)
subcategory = models.ForeignKey('Subcategory',related_name='products',null=True,blank=True)
color = models.ForeignKey('Color',related_name='productcolor',null=True)
pattern = models.ForeignKey('Pattern',related_name='productpattern',null=True)
image= models.URLField(null=True,blank=True)
# outfit= models.ForeignKey('Outfit',related_name='looks',null=True)
def __str__(self):
return self.title
class Subcategory(models.Model):
title=models.CharField(max_length=255)
category = models.ForeignKey('Category',related_name='category',blank=True,null=True)
# product= models.ForeignKey('Product',related_name='Productinsub',null=True)
# outfit= models.ForeignKey('Outfit',related_name='outlook',null=True)
class Meta:
verbose_name_plural = "subcatagories"
def __str__(self):
return self.title
class Color(models.Model):
title=models.CharField(max_length=255)
subcategory = models.ManyToManyField('Subcategory',related_name='subcategory',null=True)
# pattern = models.ForeignKey('Pattern', blank=True, null=True, related_name='colors')
def __str__(self):
return self.title
class Pattern(models.Model):
title=models.CharField(max_length=255)
# color = models.ManyToManyField('Color',related_name='patterns',null=True)
#
def __str__(self):
return self.title
のようなモデルを作成しました。ユーザーがサイドバーから長袖Tシャツなどのサブカテゴリを選択すると、カラーサイドバーで、その特定のサブカテゴリの使用可能な色をすべて表示し、同じパターンにする必要があります。では、サブカテゴリと色の直接関係はないので、どのようにしてサブカテゴリからすべての色を取得できますか?
EDIT 示唆されているように私は私の完全なモデルを追加している私は関係が追加されましたが、私は私のcsvファイルをアップロードするときには、ここで多くの分野に多くのマッピングされていない私はジャンゴから私のcsvファイルをマッピングする方法である
class CategoryAdmin(admin.ModelAdmin):
pass
admin.site.register(Category,CategoryAdmin)
# class LookAdmin(admin.ModelAdmin):
# pass
#
#
# admin.site.register(Look,LookAdmin)
@admin.register(models.Subcategory)
class SubcategoryAdmin(bulk_admin.BulkModelAdmin):
search_fields = ('title',)
raw_id_fields = ('category',)
# admin.site.register(Subcategory,SubcategoryAdmin)
class ColorAdmin(admin.ModelAdmin):
pass
admin.site.register(Color,ColorAdmin)
class ProductWidget(widgets.ForeignKeyWidget):
def clean(self, value):
return self.model.objects.get_or_create(title= value)[0]
class ProductResource(resources.ModelResource):
category = fields.Field(column_name='category', attribute='category', widget=ProductWidget(Category, 'title'))
subcategory = fields.Field(column_name='subcategory', attribute='subcategory', widget=ProductWidget(Subcategory, 'title'))
color = fields.Field(column_name='color', attribute='color', widget=ProductWidget(Color, 'title'))
pattern = fields.Field(column_name='pattern', attribute='pattern', widget=ProductWidget(Pattern, 'title'))
class Meta:
model = Product
class ProductAdmin(ImportExportModelAdmin,bulk_admin.BulkModelAdmin):
resource_class = ProductResource
list_filter = ('subcategory', admin.RelatedOnlyFieldListFilter),('color', admin.RelatedOnlyFieldListFilter),('pattern', admin.RelatedOnlyFieldListFilter)
list_select_related = ('subcategory','color','pattern')
# raw_id_fields = ('outfit',)
# bulk_inline = (ProductInline,)
# inlines = (OutfitInline,)
admin.site.register(Product,ProductAdmin)
をエクスポート-import
私のcsvファイルは、私はあなたが定義したrelated_nameを使用するカラーモデルへのサブカテゴリからアクセスするには、この
title price category subcategory color id
Stripe Top 899 Top Dress red
Fringe Shoulder Midi Dress 3495 Top Dress red
Button Through Skater Dress 1595 Top Dress red
モデルを表示する方が簡単です。 –
@JoseRomeroiがモデルを追加しました –