2013-02-06 74 views
0

我開始學習Django,我有問題。這裏是我的模型:django管理內嵌組件

from django.db import models 

class Color(models.Model): 
    title = models.CharField(max_length=30) 
    code = models.CharField(max_length=7) 
    def __unicode__(self): 
     return '{0} ({1})'.format(self.title, self.code) 

class Image(models.Model): 
    color = models.ForeignKey(Color) 
    src = models.ImageField(upload_to='media/img/') 
    alt = models.CharField(max_length=255) 
    def __unicode__(self): 
     return '{0} ({1})'.format(self.alt, self.color.title) 

class Manufacturer(models.Model): 
    title = models.CharField(max_length=255) 
    image = models.ForeignKey(Image) 
    def __unicode__(self): 
     return self.title 

我需要有可能性編輯製造商的頁面(製造商有一個圖像)的圖像實例。我怎樣才能做到這一點在admin.py

我需要這樣的東西:

class ImageInline(admin.TabularInline): 
    model = Image 

class ManufacturerAdmin(admin.ModelAdmin): 
    inlines = [ImageInline] 

但我收到

異常值:

<類 'catalog.models.Image' >沒有ForeignKey到<類 'catalog.models.Manufacturer'>

我需要一個製造商

而第二個一個形象: 我刨創建產品模型,一個產品可以有許多圖像。我想我應該創造多方面的關係。那麼,我如何在管理員中用多個圖像來描述產品?

任何想法?

+0

反轉您的管理員或更新您的模型。將外鍵放在Image中而不是製造商 – catherine

+0

不,很多模型都鏈接到Image。例如製造商,產品。客戶也可以要求爲用戶提供圖像。所以這些模型中的每一個都應該具有Image模型的關鍵。 – devalentino

+0

如何反向管理?製造商的一些圖像,產品的一些圖像。當我編輯manudacturer時,我想有可能編輯圖像到/當我編輯產品 - 我想要編輯少量產品圖像的能力。 – devalentino

回答

0

異常消息告訴你一切。您需要FK關係添加到圖像模型:

manufacturer = models.ForeignKey(Manufacturer) 

如果你只需要一個像一個製造商考慮把它在製造商的模式。這會更有效(減少數據庫查詢或「select_related」功能)並且更易於管理。

至於產品和圖像之間的多對多關係 - 只需在產品模型中使用ManyToManyField(https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/),並保持Image模型不變。

+0

我不需要在圖像模型中的外鍵。因爲有很多模型,其中有圖像。像製造商,產品,用戶一樣。所以我不需要每個人的鑰匙。我需要通過外鍵獲取管理員製造商的圖像。 我的問題是關於管理員,而不是模型 – devalentino