如何在Django中从db填充选项表单?

2024-09-26 22:09:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我不知道如何从db填充choice form。我知道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属性是必需的呢

如何解决这个问题


Tags: formdbmodel属性adminmodels电子金融
1条回答
网友
1楼 · 发布于 2024-09-26 22:09:14

我只需要将delete\u模型重写为自定义操作,然后检查所选扇区对象是否正在使用

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]
    # ...

相关问题 更多 >

    热门问题