2010-04-20 4 views
0

Django 및 StackOverflow를 처음 사용할 때 약간의 도움이되었습니다.Django 모델 관계 및 관리 화면에 대한 도움말

플랫폼에는 많은 카테고리가 있으며 카테고리는 많은 플랫폼에 속할 수 있습니다. 제품은 하나의 플랫폼 및 하나 이상의 해당 플랫폼 범주에 속합니다.

class Category(models.Model): 
    name = models.CharField(max_length=50, unique=True) 
    is_active = models.BooleanField(default=True) 

    def __unicode__(self): 
     return self.name 

class Platform(models.Model): 
    name = models.CharField(max_length=50, unique=True) 
    is_active = models.BooleanField(default=True) 
    categories = models.ManyToManyField(Category) 

    def __unicode__(self): 
     return self.name 

class Product(models.Model): 
    name = models.CharField(max_length=50) 
    is_active = models.BooleanField(default=True) 
    platform = models.ForeignKey('Platform') 

    def __unicode__(self): 
     return self.name 

    class Meta: 
     unique_together = ("platform", "category") 

모든 경우 쉘에서하지만 나는 완전히 이해할 수없는 것은 내가 플랫폼을 기반으로 아래 카테고리를 좁힐 어떻게입니다 확인 같습니다

그래서 이것은 내가 지금까지 내 모델이 무엇인가 새 제품을 만들 때? 이상적으로는 관리자 화면에서이 작업을 수행 할 수 있습니까?

이 모델이 좋아 보이나요? 아니면 더 잘 할 수 있습니까?

+1

제품과 카테고리 간의 관계가 누락 되었습니까? 당신은 질문과 unique_together에서 언급하지만 제품에 카테고리 속성이 없습니다 – Garethr

답변

0

나는, 당신이 요구하는지 느낌이 관리 인터페이스를 사용하여 새로운 Product 모델을 만들 때, 당신이 범주를 선택할 수하는 Platform, 다음을 선택 할 수 있도록하려는 것입니다있다 여기에 주어진 카테고리 옵션에 따라 에만 해당되며 선택된 Platform과 이미 연관된 옵션이 있습니다.

내 친구가 생각했던 것보다 조금 힘들다고. 그 이유는 django에 내장 된 서버가 "왕복"이 아니기 때문에 Platform을 선택하면 웹 앱이 서버로 이동하여 Category의 옵션을 모은 다음 표시합니다. 기본적으로 이러한 옵션은 없습니다 (비록 이것이 표준 Django 패키지의 일부로 포함된다면 놀라지 않을 것입니다).

그러나 javascript/ajax에서 구현하여이를 수행하는 방법이 있습니다.이 방법은 사용자 경험에 따라 다소 어려울 수 있습니다.

좋은 소식은 장고의 일반적인 작업과 마찬가지로 일반적으로 개발 중이거나 이미 필요에 맞게 사용할 수있는 커뮤니티 앱이 있다는 것입니다. 이 경우에는 django-ajax-filtered-field을 확인하는 것이 좋습니다.

+0

아, 알았어요. 링크에 대해 많은 감사를 표합니다. 아마도 내 모델을 조금 재고 할 필요가있을 것입니다. 나는 플랫폼 내에있는 모든 카테고리를 얻을 수 있어야합니다. 또한 해당 카테고리가있는 제품의 수를 계산해야합니다. – JMWhittaker