Как я могу получить конкретное поле внешнего ключа, связанное с другой моделью в django?
models.py
class Product(DateTimeModel):
product_id = models.CharField(max_length=200)
product_name = models.CharField(max_length=200)
def __str__(self):
return self.product_id
class ProductVariantsManager(models.Manager):
def colors(self):
return super(ProductVariantsManager, self).filter(variant_type='Color', approval_status = "Approved")
class ProductVariants(DateTimeModel):
product_id = models.ForeignKey(Product, related_name="product_variants", null=True, on_delete=models.CASCADE)
variant_type = models.ForeignKey(VariantsType, null=True, on_delete=models.CASCADE)
variant_value = models.ForeignKey(VariantsValue, null=True, on_delete=models.CASCADE)
approval_status = models.CharField(max_length=50,choices=PRODUCT_STATUS,default="Pending",null=True, blank=True)
objects = ProductVariantsManager()
def __str__(self):
return str(self.item_num)
HTML
<select name="color" class="form-control col-7" required>
{% for i in product_id.productvariants_set.colors %}
<option selected value="{{ i.variant_value}}">{{ i.variant_value}}</option>
{% endfor %}
</select>
Продукт сохранил несколько вариантов на основе цветов. Здесь мне нужно получить значение variants_value(black, brown, red...) для конкретного продукта. Я ничего не получил с помощью этого запроса. Есть ли здесь проблема с иностранным ключом запроса? Нужна помощь, чтобы сделать это правильно.
Вы фильтруете variant_type='Color', но variant_type - это ForeignKey, а не CharField. Что-то вроде variant_type__name='Color' должно работать, но на самом деле здесь нет необходимости в FK, CharField с models.TextChoices будет достаточно.
Я на самом деле удивлен, что это не взорвалось. Вместо того чтобы пытаться отлаживать внутри шаблона, попробуйте запустить свои запросы в REPL и посмотреть, что вы получите на каждом шаге.
Кроме того, product_id - это целое число (как следует из названия) или настоящий объект Product?