如何在Django中填充db中的选择表单?

时间:2016-06-02 20:57:28

标签: python django django-models

我无法弄清楚如何从choice form填充db。我知道ModelChoiceForm,但问题似乎略有不同。

我希望user选择他所在的行业。例如:'财务','电子'等我会做的很简单:

SECTOR_CHOICES = (('finance',_('Finance'),
                   'electronics',_('Electronics')...
                 ))

但问题是,我希望网络admin能够添加新的选择,删除选择等。

我想到的是创建一个名为Model的简单Sector

class Sector(models.Model):
    name = models.CharField(max_length=40)

User会有新属性sector = models.ModelChoice(Sector)

但我很害怕当admin更改或删除已经使用过的扇区时会发生什么,等等,如果他删除它并且需要sector属性怎么办?

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我只是将delete_model覆盖为自定义操作,并检查所选的扇区对象是否正在使用中。

def delete_model(modeladmin, request, queryset):
    for obj in queryset:
        if UserModel.objects.filter(sector=obj).exists():
            # do not delete, just add some message warning the admin about it
        else:
            obj.delete()

class UserModelAdmin(admin.ModelAdmin):
    actions = [delete_model]
    # ...