如何在django管理表单save_model中获取字段值

Atm*_*tma 2 python django django-models django-forms django-admin

我有以下型号:

class Guest(models.Model):
    first_name = models.CharField(max_length=128)
    last_name = models.CharField(max_length=128)
    category = models.ForeignKey(Category)
    player_achievement = models.ForeignKey(PlayerAchievement, related_name="guest_achievements")
    player = models.ForeignKey(Player)
Run Code Online (Sandbox Code Playgroud)

我希望在表单中选择要在我的save_model方法中使用的播放器:

def save_model(self, request, obj, form, change):
        player = ??? how do i get this from the admin form?


        obj.player = player
        obj.save()
Run Code Online (Sandbox Code Playgroud)

小智 8

这取决于你如何宣布你的表格.如果继承了ModelForm,那么在大多数情况下你应该使用ModelChoiceField来选择Player与你的Guest对象相关联,这是通过调用form.cleaned_data.get('player')