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

我需要有可能在制造商页面上编辑图像实例(制造商有一个图像)。我怎样才能在 admin.py 中做到这一点

我需要类似的东西:

class ImageInline(admin.TabularInline):
    model = Image

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

但我收到

异常值:

<class 'catalog.models.Image'> 没有到 <class 'catalog.models.Manufacturer'> 的 ForeignKey

我需要为一个制造商提供一张图片

第二个:我打算创建产品模型,一个产品可以有很多图像。我认为我应该创建多对多关系。那么如何在管理员中用许多图像来描述产品呢?

有任何想法吗?

4

1 回答 1

0

异常消息告诉你一切。您需要将 FK 关系添加到 Image 模型:

manufacturer = models.ForeignKey(Manufacturer)

如果您只需要一个制造商的一张图片,请考虑将其放入制造商模型中。这将更有效(更少的数据库查询或“select_related”函数)并且更易于管理。

至于 Product 和 Image 之间的多对多关系 - 只需在 Product 模型中使用 ManyToManyField ( https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/ ) 并保持 Image 模型不变。

于 2013-02-07T12:42:32.723 回答