Ich habe versucht, eine Rest-API mit Django Rest Framework zum Erstellen von mobilen Anwendungen zu entwerfen. Ich könnte eine API für die Store-Liste entwerfen, die Informationen zum Händler (Händler), Geschäftsinformationen, Shopkategorie und Produkt anzeigt, aber das Produktbild wird nicht angezeigt. Warum zeigt mein Code kein Produktbild an? Könnte mir bitte jemand eine Idee oder einen Rat geben, warum es nicht funktioniert?Produktbild in einer API konnte nicht angezeigt werden
Mein Code
mein models.py
class Store(models.Model):
merchant = models.ForeignKey(Merchant)
name_of_store = models.CharField(max_length=100)
store_off_day = MultiSelectField(choices=DAY, max_length=7, default='Sat')
store_categories = models.ManyToManyField('StoreCategory',blank=True)
class Meta:
verbose_name = 'Store'
class Product(models.Model):
store = models.ForeignKey(Store)
name_of_product = models.CharField(max_length=120)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(decimal_places=2, max_digits=20)
# categories = models.ManyToManyField('Category',blank=True)
class ProductImage(models.Model):
product = models.ForeignKey(Product)
image = models.ImageField(upload_to='products/images/')
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
class StoreCategory(models.Model):
product = models.ForeignKey(Product,null=True, on_delete=models.CASCADE,related_name="store_category")
store_category = models.CharField(choices=STORE_CATEGORIES, default='GROCERY', max_length=10)
Serializers.py
class ProductImageSerializer(ModelSerializer):
class Meta:
model = ProductImage
fields = ('id','image',)
class ProductSerializers(ModelSerializer):
image = ProductImageSerializer(many=True,read_only=True)
class Meta:
model = Product
fields=('id','image','name_of_product','description','price','active',)
class StoreCategorySerializer(ModelSerializer):
product = ProductSerializers(read_only=True)
class Meta:
model = StoreCategory
class StoreSerializer(ModelSerializer):
# url = HyperlinkedIdentityField(view_name='stores_detail_api')
store_categories = StoreCategorySerializer(many=True)
merchant = MerchantSerializer(read_only=True)
class Meta:
model = Store
fields=("id",
# "url",
"merchant",
"store_categories",
"name_of_store",
"store_contact_number",
"store_off_day",
)
Meine API
Hat genau wie Sie gesagt, aber immer noch Bildfeld wird nicht in einer API angezeigt. – pri
Sie haben einen Fehler in Ihrem Fremdschlüsselverweis, anstatt ihn vom Produkt zu referenzieren, auf das Sie ihn von ProductImage verweisen. Siehe den aktualisierten Code. – dmitryro
Ja, es funktioniert jetzt. Danke für Ihre Hilfe. Eine letzte Frage, mein Datenbankmodell betrachtend oder enitites sagend, Was denkst du über mein Modell und API-Design? Mache ich den richtigen Weg? Ich brauche nur Ihr Feedback (ich bin ein Anfänger), wenn Sie Ihre Zeit nicht den Code haben. – pri