Django ValueError:字段';id';应为一个数字,但得到';耳语';

Django ValueError:字段';id';应为一个数字,但得到';耳语';,django,django-models,django-rest-framework,django-queryset,Django,Django Models,Django Rest Framework,Django Queryset,这是我的模特 class RUDevice(models.Model): name = models.CharField(_("Device Name"), max_length=100, blank=False, null=False, help_text="Device Name", default='') last_active = models.DateTimeField(_("Last Active"), auto_now=False, auto_n

这是我的模特

  class RUDevice(models.Model):
        name = models.CharField(_("Device Name"), max_length=100, blank=False, null=False, help_text="Device Name", default='')
        last_active = models.DateTimeField(_("Last Active"), auto_now=False, auto_now_add=False, 

class Magazine(models.Model):
    device = models.ForeignKey(RUDevice, on_delete=models.CASCADE, null=False, blank=False, related_name='ru_magazine' )
    product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE, null=False, blank=False, related_name='magazine_product_type')

class MagazineProduct(models.Model):
    magazine = models.ForeignKey(Magazine, on_delete=models.CASCADE, null=False, blank=False, related_name='magazine_product', help_text="Select magazine for product")

class ProductType(models.Model):
    brand = models.ForeignKey(ProductCompany, on_delete=models.CASCADE, null=False, blank=False, related_name='company', help_text="Select company name")
    size = models.ForeignKey(ProductSize, on_delete=models.CASCADE, null=False, blank=False, related_name='type_class', help_text="Select product class")

class Product(models.Model):
    sku = models.CharField(_("SKU"), max_length=100, blank=True, unique=True,help_text="Store ID")
    product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE, null=False, blank=False, related_name='product_type', help_text="Select product type")
    count= models.PositiveIntegerField(default=0)

class SingleProduct(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE, null=True, blank=True, related_name='product', help_text="Select product")
我试图用特定的品牌来过滤粗鲁的东西。它将返回该杂志拥有该品牌的所有rurudevices。 我的第一个方法是这样

for i in RUDevice.objects.all():
    mg = Magazine.objects.filter(device=i)
然后用所有返回的mg过滤所有MagazineProduct。
MagazineProduct.objects.filter(magazine\uuuu in=mg,magazine\uuuu product\u type\uuuuu brand=“Whisper”)

如果我能过滤magazineProduct,那么我就可以得到粗鲁的东西。但我得到了
ValueError:字段“id”需要一个数字,但得到了“Whisper”。

我的apporach可以吗?

正如错误所述,它需要一个整数值或一个对象。但如果您使用字符串搜索,则可能是针对字段。假设它是一个
名称
,您可以这样尝试:

MagazineProduct.objects.filter(
    magazine__device=i,
    magazine__product_type__brand__name="Whisper"
)

我已删除了
mg
,并在
MagazineProduct
中直接使用
I

很难说清楚您的数据模型是关于什么的。例如,为什么有一个
SingleProduct
,它只有一个产品的外键?一本杂志真的只能引用一个设备吗?等等,我还有其他领域。使用单一产品。为了简单起见,我发布了这种方式。我只想按品牌过滤,并显示rudevices拥有该产品品牌。