我开始学习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'stalog.models.Image'>没有ForeignKey到< class 'catalog.models.Manufacturer' >
我需要一个制造商的图像
第二个: 我计划创建产品模型,一个产品可以有很多图像。我想我应该创造多对多的关系。那么如何用很多图像描述管理中的产品呢?
有什么想法吗?
答案 0 :(得分:0)
异常消息告诉你一切。您需要将FK关系添加到图像模型:
manufacturer = models.ForeignKey(Manufacturer)
如果一个制造商只需要一张图片,请考虑将其放入制造商型号。这将更有效(更少的数据库查询或“select_related”功能)并且更易于管理。
对于Product和Image之间的多对多关系 - 只需在Product模型中使用ManyToManyField(https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/)并保持Image模型不变。