2013-10-16 7 views
8

私の製品モデルの詳細ページにアクセスしようとすると、そのエラーが発生します。私はurlファイルにslugフィールドを持っていますが、それは重要ではないようです。一般的な詳細ビューは、オブジェクトpkまたはスラッグのいずれかで呼び出さなければなりません

モデル

class Product(models.Model): 
    product_name= models.CharField(max_length=30, blank=False, null=False, verbose_name="the product name") 
    product_slug= models.SlugField(max_length=30, blank=False, null=False, verbose_name="the product slug") 
    product_excerpt= models.CharField(max_length=100, blank=False, null=False, verbose_name="product excerpt") 
    def _set_product_code(self): 
     product_code_temp = hashlib.sha224() 
     product_hash = self.product_name 
     product_hash = product_hash.encode('utf-8') 
     product_code_temp.update(product_hash) 
     return product_code_temp.hexdigest()[0:5] 
product_code = property(_set_product_code) 

ビュー

class ProductPage(DetailView): 
    model = Product 
    context_object_name = 'product' 
    template_name="product.html" 

のURL

url(r'^product/(?P<product_slug>\w+)/(?P<product_code>\w+)/$', ProductPage.as_view(), name="product"), 

誰もが私が間違ってやって特定することはできますか?

class ProductPage(DetailView): 
    model = Product 
    slug_field = 'product_slug' 
    # etc 

答えて

15

私がURLConfで渡しているguidでオブジェクトを取得したい場合は

def get_object(self): 
    return Product.objects.get(guid=self.kwargs.get("guid")) 
4

私はget_objectたちは、主キー

例のために異なる外観アップパラメータを持っている場合にも使用することができることを追加したい:ビュークラスのslug_field属性を設定

関連する問題