Django多图一品

Django multiple pictures one product

我遇到以下问题:我正在编写一个网上商店,每个产品都有多张图片。所以这是一个一对多的关系,外键在图片模型中。但是,如果我将模型“产品”和“图片”注册到管理站点,用户显然需要添加产品然后导航到图片并添加图片并在图片创建过程中引用产品。相反,我希望用户能够创建产品,然后在管理面板内同一子页面内的下拉菜单中添加多张图片。我怎样才能完成这种行为?它应该看起来与多对多关系完全一样。但是我不想使用 ManyToManyField,我已经尝试过了,然后它会导致逻辑问题。

models.py:

class Picture(models.Model):
    picture = models.ImageField(upload_to='shop/static/shop/images/')
    product = models.ForeignKey(Product, on_delete=models.CASCADE)

    def __str__(self):
        return self.picture.url

class Product(models.Model):

    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name

admin.py

admin.site.register(Picture)
admin.site.register(Product)
class Picture(models.Model):
    picture = models.ImageField(upload_to='shop/static/shop/images/')
    def __str__(self):
         return self.picture.url

class Product(models.Model):
     name = models.CharField(max_length=200)
     product = models.ManyToManyField(Picture, blank=True,related_name="product_img")

     def __str__(self):
         return self.name

尝试改用它。

models.py

class Picture(models.Model):
    picture = models.ImageField(upload_to='shop/static/shop/images/')  

    def __str__(self):
        return self.picture.url

class Product(models.Model):
    name = models.CharField(max_length=200)
    picture = models.ForeignKey(Picture, on_delete=models.CASCADE)
    
    def __str__(self):
        return self.name

admin.py

class PictureInline(modeladmin.StackedInline):
    model = Picture
class ProductAdmin(admin.ModelAdmin):
    inlines = [PictureInline]

admin.site.register(Product, ProductAdmin)

#注意:不要注册你的图片模型,因为你已经在产品中插入了内联所以从这里你可以直接把你的图片放在产品中。