django多对多保存管理员

时间:2015-09-21 07:22:40

标签: python django admin

我有一个类似的模型:

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    type = models.ManyToManyField(Type, blank=True)

此处来自管理员我正在添加MyModel。

我想要的是如果在保存时未提供类型,那么我希望类型为默认类型Teacher

尚未创建

类型Teacher。如果未提供类型,我想创建类型并在未提供类型的情况下分配

1 个答案:

答案 0 :(得分:1)

根据documentation的示例,您可以像这样覆盖save_model

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    def save_related(self, request, form, formsets, change):
        if not form.cleaned_data['type']:
            type, created = Type.objects.get_or_create(name="Teacher")
            form.cleaned_data['type'] = [type]
        form.save_m2m()
        for formset in formsets:
             self.save_formset(request, form, formset, change=change)