美好的一天,不久前,与 Django 一起工作。 遇到以下问题。
有两种模式
class Product(models.Model):
productID = models.AutoField(primary_key=True)
brandID = models.ForeignKey(Brand, verbose_name=u'Бренд')
categoryID = models.ForeignKey(Category, verbose_name=u'Категория')
productPhotos = models.ManyToManyField("ProductPhoto", verbose_name = "Фотографии товара", related_name="photos", blank=True)
class ProductPhoto(models.Model):
productPhotoID = models.AutoField(primary_key=True)
productID = models.ForeignKey(Product)
imageFile = models.FileField(u'Путь к изображение', upload_to=makeUploadPath)
dateModified = models.DateField(auto_now=True)
对于管理员,请使用以下 TabularInline
class ProductPhotoInline(admin.TabularInline):
model = ProductPhoto
verbose_name = u"Фото"
verbose_name_plural = u"Фотографии"
class ProductAdmin(admin.ModelAdmin):
list_display = ('title')
search_fields = ...
fieldsets = ...
)
inlines = [ ProductPhotoInline, ]
添加产品时出现的问题,表ProdcutPhoto productId 字段被填充,而Products 表productPhotos 字段为空。如何最好地填写这两个字段。
请您参考如下方法:
您应该删除 productPhotos ManyToMany 字段,它是多余的。如果每张照片仅附加到一个产品,那么您只需要产品 ID 外键。
要访问产品实例中的照片,您可以使用 productphoto_set,例如
product = Product.objects.get(pk=1)
photos = product.productphoto_set.all()
