2015-11-07 49 views
1

我試圖從管理員下拉功能(查詢集)中應用值。下面的代碼工作,但只適用於外鍵。在Django中使用Queryset進行多對多管理

如果我嘗試將此應用於多對多字段,則會出現一個FieldError,指出「只允許非關係和外鍵」。

def tag_Tagtest(self, request, queryset): 
    queryset.update(tag=Tag.objects.get(name__iexact='BLAH_BLAH'), updated=timezone.now()) 

這是我多對多的嘗試:

-----models.py

class Product(models.Model): 
    name = models.CharField ("Name", max_length=400) 
    tag = models.ManyToMany (Tag, blank=True) 


class Tag(models.Model): 
    name = models.CharField(max_length=30) 
    tag_type = models.CharField(max_length=30) 
    def __str__(self): 
     return self.name 

----admin.py

def TEST_M2M (self, request, queryset): 
queryset = self.model._meta.app_label, self.model._meta.model_name 

我怎麼能使用上面的代碼應用於多對多字段?

回答

1

Django無法一次將M2M值添加到多個對象,但可以遍歷查詢集。

blahblah=Tag.objects.get(name__iexact='BLAH_BLAH') 
for product in queryset: 
    product.tag.add(blahblah) 
+1

只要M2M關係是對稱的,而不是添加標籤的產品,你可以將產品添加到標籤:'Tag.objects.get(...)product_set.add(*列表(查詢集)) ' –