django ModelForm:self:无法获取<class

时间:2017-09-09 23:13:15

标签: python django django-forms repr

=“”

的repr我有一个django来自我的开发环境,但不是我的生产环境。

如果我调试我的开发环境,我会注意到此警告显示在表单的__init__函数中:

self: Unable to get repr for <class 'badges.forms.BadgeAssertionForm'> args <class 'tuple': (None,) kwargs: {'initial': {'badge': <Badge: Test Badge>}}

forms.py

class BadgeAssertionForm(forms.ModelForm):
    class Meta:
        model = BadgeAssertion
        # fields = '__all__'
        exclude = ['ordinal', 'issued_by', 'semester']

    def __init__(self, *args, **kwds):
        super(BadgeAssertionForm, self).__init__(*args, **kwds)
        self.fields['user'].queryset = User.objects.order_by('profile__first_name', 'username')
        self.fields['user'].label_from_instance = lambda obj: "%s (%s)" % (obj.profile, obj.username)

表单在views.py中创建:

def assertion_create(request, user_id, badge_id):
    # view can accept a user_id or badge_id, otherwise they will be 0
    initial = {}
    if int(user_id) > 0:
        user = get_object_or_404(User, pk=user_id)
        initial['user'] = user
    if int(badge_id) > 0:
        badge = get_object_or_404(Badge, pk=badge_id)
        initial['badge'] = badge

    form = BadgeAssertionForm(request.POST or None, initial=initial)

其他答案我已经看到所有人建议在课堂上添加__str__功能,但是,我以前从未见过需要__str__的ModelForm?此外,当我添加一个错误仍然出现。

我的生产环境中的问题是User字段根本不会出现在表单中。只是徽章领域。

这里是models.py

中的BadgeAssertion
class BadgeAssertion(models.Model):
    badge = models.ForeignKey(Badge)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    #... some other fields.

编辑:我认为当我将Django升级到1.11(从1.9?)时停止工作,但我并不乐观。

0 个答案:

没有答案