Всем доброго дня.
В двух словах расскажу о проекте.
Проект по недвидимости, есть различные направления:
Городская, загородная, коммерческая, городская, канализацинная недвижимость.
У недвижимости есть базовый набор параметров
и у каждой категории есть свой "дополнительный" набор.
Необходимо что бы Администратор сам мог добавлять параметры к определенной категории.
Получаем такую схему:
class Category(models.Model):
name = models.CharField(max_length=150, verbose_name='Категория', null=False)
order_id = models.PositiveIntegerField(default=1, null=False)
image = models.ImageField(upload_to='category')
def __unicode__(self):
return self.name
@permalink
def get_absolute_url(self):
return self.id
class RealEstate(models.Model):
name = models.CharField(max_length=150, null=False)
metro_id = models.ForeignKey(Metro, defulat=1)
text = models.TextField(null=False)
image = models.ImageField(upload_to='realestate')
price = models.PositiveIntegerField(default=1, null=False)
parameter = models.ManyToManyField(Parameters, through="RealEstateParameters")
class Parameters(models.Model):
name = models.CharField(max_length=150, null=False)
value = models.CharField(max_length=150, null=False)
category_id = models.ForeignKey(Category)
class RealEstateParameters(models.Model):
realestate_id = models.ForeignKey(RealEstate)
parametrs_id = models.ForeignKey(Parameters)
Вопрос, как в панели администрирования показывать параметры только для данной категории ?
Пробовал такой финт ушами:
class RealEstateForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(RealEstateForm, self).__init__(*args, **kwargs)
params = Category.objects.filter(pk=self.instance.category_id)
w1 = self.fields['parameters'].widget
choices1 = []
for choice1 in params:
choices1.append((choice1.id, choice1.name))
w1.choices = choices1
class RealEstateAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'category', 'direction', )
form = RealEstateForm
Сюда по всему показалось что параметры manytomany строятся где-то вне realestateform и этот спобоб ничего не дал
разве что можно добавить
class RealEstateParametersInline(admin.TabularInline):
model = RealEstate.parameter.through
extra = 4
и указать начальное кол-во параметров.
Так же если можно - посоветуйте где можно прочитать про построение many2many fields в админке
тк необходимо в зависимости от значений выставлять checkbox, select и т.п.
надеюсь ясно объяснил проблему доходчиво.
заранее спасибо за ответы