在Django admin中使用Queryset进行多对多操作

时间:2015-11-07 01:57:29

标签: python django django-admin django-queryset

我尝试应用管理下拉列表功能(查询集)中的值。以下代码有效,但仅适用于外键。

如果我尝试将它应用于多对多字段,我会得到一个字段错误,该错误表示"只允许非关系和外键#34;。

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

这是我对ManyToMany的尝试:

----- 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 个答案:

答案 0 :(得分:1)

Django不能同时将M2M值添加到多个对象,但您可以遍历查询集。

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