0

私は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

製造元のページで画像インスタンスを編集できるようにする必要があります (製造元には 1 つの画像があります)。admin.py でそれを行うにはどうすればよいですか

次のようなものが必要です:

class ImageInline(admin.TabularInline):
    model = Image

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

しかし、私は受け取ります

例外値:

<class 'catalog.models.Image'> には <class 'catalog.models.Manufacturer'> への ForeignKey がありません

1 つのメーカーに対して 1 つの画像が必要です

2 つ目: 製品モデルを作成する予定で、1 つの製品に多くの画像を含めることができます。多対多の関係を作成する必要があると思います。では、画像が多い管理画面で商品を説明するにはどうすればよいでしょうか?

何か案は?

4

1 に答える 1

0

例外メッセージがすべてを教えてくれます。画像モデルにFKリレーションを追加する必要があります。

manufacturer = models.ForeignKey(Manufacturer)

1つのメーカーに1つの画像のみが必要な場合は、メーカーモデルに配置することを検討してください。これはより効率的で(DBクエリまたは「select_related」関数が少ない)、管理が容易になります。

製品と画像の多対多の関係については、製品モデルで多対多フィールド(https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/)を使用し、画像モデルはそのままにしておきます。

于 2013-02-07T12:42:32.723 に答える