管理操作 - 查询集应用多对多

时间:2015-11-11 01:48:15

标签: django django-admin django-queryset django-admin-filters

如何使用admin操作创建将应用多对多值的查询集?

我理解'价值'必须已经存在(在我的情况下,itsel必须存在的颜色)。

模型

public function update($table,$row,$where,$where_condition=null,$dev='OFF'){
    $query = "UPDATE ".$table." SET ".$this->getSetClause($row)." ".$this->getWhereClause($where,$where_condition);
    if($dev=='ON')
        return $query;
    $response = $this->query($query);

    return $response ? true : false;
}

Admin.py

function updateRedirect($redirect){
global $nsqlQuery;

    $where = $redirect;
$result = $nsqlQuery->update("urls",$where) SET ".$nsqlQuery->select("urls",'*',$where);
 return $result ? $result : false;
 }

尝试1:仅适用于FK

class Colours(models.Model):
    colour_name = models.CharField(max_length=50)

class Car(models.Model):
    brand = models.CharField(max_length=200)
    available_colours = models.ManyToManyField(Colours, blank=True)

尝试2:没有工作

class CarAdmin(admin.ModelAdmin):
    actions = ['Red']

1 个答案:

答案 0 :(得分:1)

你可以assign relations sets in django

def Red(self, request, queryset):
    red_color = Colour.objects.get(colour_name__iexact='Red')
    queryset.update(available_colours=[red_color])

根据您的评论和docs,似乎django不支持许多字段的批量更新。

你可以这样解决:

def Red(self, request, queryset):
    red_color = Colour.objects.get(colour_name__iexact='Red')
    for car in queryset:
        car.available_colours.add(red_color)