第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Django 按多對(duì)多關(guān)系的額外字段過(guò)濾

Django 按多對(duì)多關(guān)系的額外字段過(guò)濾

郎朗坤 2022-12-06 15:42:34
我有這種模型定義,我希望有一個(gè)與相應(yīng)產(chǎn)品的屬性距離 < 40 的產(chǎn)品列表class Product(models.Model):    title = models.CharField(max_length=255)    near_duplicate_images = models.ManyToManyField("self", through="NearDuplicate")class NearDuplicate(models.Model):    first_product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="first_product")    second_product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="second_product")    distance = models.IntegerField(null=True, blank=True)我試過(guò)這樣做來(lái)直接訪問(wèn)關(guān)系p = Product.objects.filter(near_duplicate_images__distance__lt=40).prefetch_related('near_duplicate_images')但它引發(fā)了這個(gè)例外django.core.exceptions.FieldError: Related Field got invalid lookup: distance我也試過(guò)這樣做p = Product.objects.all().prefetch_related(Prefetch("near_duplicate_images", queryset=NearDuplicate.objects.filter(distance__lt=40), to_attr="near_duplicate_images_list"))但它引發(fā)了這個(gè)例外django.core.exceptions.FieldError: Cannot resolve keyword 'near_duplicate_images_rel_+' into field. Choices are: distance, first_product, first_product_id, id, second_product, second_product_id
查看完整描述

2 回答

?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

我認(rèn)為這樣的查詢應(yīng)該有效。因?yàn)槟阆胍?code>distance小于 40 的產(chǎn)品列表。

products = NearDuplicate.objects.filter(distance__lt=40).values('first_product', 'second_product')

這將給出類似于

<QuerySet [{'first_product': 1, 'second_product': 2}]>

更新-我已經(jīng)對(duì)這些查詢進(jìn)行了一些嘗試。如果你想獲得任何first_product或中存在的產(chǎn)品的絕對(duì)列表second_product。您可能需要使用多個(gè)查詢,例如

q1= NearDuplicate.objects.filter(distance__lt=40).values_list('first_product', flat=True)

這將輸出為

<QuerySet [1]>

q2 = NearDuplicate.objects.filter(distance__lt=40).values_list('second_product', flat=True)

這將輸出為

<QuerySet [2]>

第一個(gè)查詢查詢中列出的first_product所有產(chǎn)品,第二個(gè)查詢列出中列出的所有產(chǎn)品second_product?,F(xiàn)在您可以合并它們并使用以下查詢?nèi)〕霾煌闹?/p>

q1.union(q2).distinct()

這將使最終輸出為

<QuerySet [1, 2]>

我希望它有所幫助。:)


查看完整回答
反對(duì) 回復(fù) 2022-12-06
?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

我認(rèn)為您不需要“near_duplicate_images”字段。嘗試類似的東西(尚未測(cè)試):

p = Product.objects.filter(title__in=NearDuplicate.object.filter(first_product=current_product, distance=40).values('second_product',)

查詢集 API - “_in”


查看完整回答
反對(duì) 回復(fù) 2022-12-06
  • 2 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)