Python 如何在django rest中自动继承foreignkey模型的字段?

Python 如何在django rest中自动继承foreignkey模型的字段?,python,django,database,django-models,django-rest-framework,Python,Django,Database,Django Models,Django Rest Framework,Models.py,来自django admin,我所做的是我可以将一个产品添加到特色产品中,但问题是当我在admin中选择一个产品使其成为特色产品时,我想自动继承该产品的图像url,该url是在该产品创建时上载的 class Product(models.Model): seller = models.ForeignKey(Seller, on_delete=models.CASCADE) title = models.CharField(max_length=120, pri

Models.py,来自django admin,我所做的是我可以将一个产品添加到特色产品中,但问题是当我在admin中选择一个产品使其成为特色产品时,我想自动继承该产品的图像url,该url是在该产品创建时上载的

class Product(models.Model):
    seller = models.ForeignKey(Seller, on_delete=models.CASCADE)
    title = models.CharField(max_length=120, primary_key=True)

    image = models.FileField()
    def __str__(self):
        return self.title


class FeaturedProduct(models.Model):
    db_identification = models.CharField(max_length=120)
    featured = models.ForeignKey(Product, on_delete=models.CASCADE)

    photograph = How do I inherit it automatically from foreignkey product selected?
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.db_identification

您可以覆盖FeaturedProduct的保存功能

类功能产品模型。模型: db_标识=型号。CharFieldmax_长度=120 特色=models.ForeignKeyProduct,on_delete=models.CASCADE 照片=模型。文件字段空白=真 timestamp=models.dateTimeFieldDauto\u now\u add=True 定义自身: 返回self.db_标识 def saveself,*args,**kwargs: self.photo=self.characterized.image superFeaturedProduct,self.save*args,**kwargs
实际上,复制图像可能不是一个好主意。事实上,数据库的设计是为了避免数据重复。无论如何,在您的代码中,如果您想要给定FeaturedProduct的产品图像,您可以使用:

featured_product = FeaturedProduct.object.get(...)
image = feature_product.product.image
这样,就不会有重复。例如,在更改图像时更容易

编辑:如果您想从FeaturedProduct轻松访问,可以添加一个util方法:

class FeaturedProduct(models.Model):
    db_identification = models.CharField(max_length=120)
    featured = models.ForeignKey(Product, on_delete=models.CASCADE)

    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.db_identification

    @property
    def photograph(self):
       return self.product.image

你不认为复制数据是一种不好的做法吗?你可能是对的:实际上我只是想展示一下原理。如果我正确地解释了这个问题,问题的作者实际上只是想存储一个url…?我不想复制任何东西,我只是想得到一个图像url。是为我尝试制作的产品保存的功能,而您只需将照片更改为url字段,并在save methode.bro中将其设置为正确的url。该产品在媒体文件夹中已经有一个图像,该图像作为url返回,但现在,当我选择一个产品作为外键时,我希望获得/继承所选产品的图像。当我导航到/featured时,它是json格式的。当我通过django admin选择要特色化的foreignkey,然后导航到特色化的url时,它应该显示我已经特色化的产品,但我也希望它自动显示该产品的图像url。你是对的。它错过了一个简单获取它的util方法。我已经编辑了我的回答,有人能帮我吗?我编辑了我的问题,并添加了一张输出图片,用于选择要在“特色”中显示的产品,但我如何继承已为foreignkey产品指定的图像url???有人能帮我吗?